Tóm tắt:Làm thế nào để nắm bắt kết quả đầu ra của Shell trong C#?
- registry truy vấn trên máy tính từ xa
- chụp đầu ra để sử dụng trong ứng dụng
- cần phải được trong CSharp
- cho đến nay tất cả các phương pháp sử dụng chỉ có thể truy vấn trên máy cục bộ
- bất kỳ hy vọng nào được đánh giá cao
Sự cố đầy đủ:
Tôi cần tìm một cách để chạy một lệnh dòng lệnh trong csharp và nắm bắt đầu ra của nó. Tôi biết làm thế nào để làm điều này trong Perl, dưới đây là mã tôi sẽ sử dụng trong Perl.
#machine to check
my $pc = $_[0];
#create location of registry query
my $machine = "\\\\".$pc."\\HKEY_USERS";
#run registry query
my @regQuery= `REG QUERY $machine`;
Mọi đề xuất về cách thực hiện điều này trong csharp sẽ được hoan nghênh. Cho đến nay, ive đã thử sử dụng phương thức RegistryKey OurKey = Registry.Users và nó hoạt động rất tốt nhưng tôi không thể truy vấn registry trên máy từ xa.
Vui lòng cho tôi biết nếu bạn cần thêm thông tin.
GIẢI PHÁP: (Cảm ơn bạn @Robaticus)
private void reg(string host)
{
string build = "QUERY \\\\" + host + "\\HKEY_USERS";
string parms = @build;
string output = "";
string error = string.Empty;
ProcessStartInfo psi = new ProcessStartInfo("reg.exe", parms);
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
psi.UseShellExecute = false;
System.Diagnostics.Process reg;
reg = System.Diagnostics.Process.Start(psi);
using (System.IO.StreamReader myOutput = reg.StandardOutput)
{
output = myOutput.ReadToEnd();
}
using (System.IO.StreamReader myError = reg.StandardError)
{
error = myError.ReadToEnd();
}
Output.AppendText(output + "\n");
}
thể trùng lặp của [Chụp sản lượng vỏ nslookup với C#] (http://stackoverflow.com/questions/353601/capturing-nslookup-shell-output-with-c) –
Bạn hãy thử 'RegistryKey.OpenRemoteBaseKey '? http://msdn.microsoft.com/en-us/library/8zha3xws.aspx –
PowerShell sẽ là lựa chọn tốt hơn nhiều. – TrueWill