Resumen:Cómo capturar el resultado del comando Shell en C#?
- registro de consulta en la máquina remota salida
- captura para su uso en aplicaciones
- tiene que estar en CSharp
- hasta ahora todos los métodos utilizados sólo pueden consultar en la máquina local
- cualquier esperanza es muy apreciada
Número completo:
Necesito encontrar una manera de ejecutar un comando de línea de comando en csharp y capturar su salida. Sé cómo hacer esto en Perl, a continuación se muestra el código que usaría en 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`;
Cualquier sugerencia sobre cómo hacer esto en csharp sería bienvenida. Hasta ahora he intentado usar el método RegistryKey OurKey = Registry.Users y funciona muy bien, pero no puedo consultar el registro en una máquina remota.
Háganme saber si necesita más información.
SOLUCIÓN: (Gracias a @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");
}
posible duplicado de [Captura de salida de la shell nslookup con C#] (http://stackoverflow.com/questions/353601/capturing-nslookup-shell-output-with-c) –
¿Usted intentó 'RegistryKey.OpenRemoteBaseKey ¿? http://msdn.microsoft.com/en-us/library/8zha3xws.aspx –
PowerShell sería una opción mucho mejor. – TrueWill