Comment capturer la sortie de la commande Shell en C #?
Résumé:
- requête de registre sur la machine distante
- sortie de capture à utiliser dans l'application
- doit être en csharp
- jusqu'à présent, toutes les méthodes utilisées peut seulement faire une requête sur la machine locale
- tout espoir est grandement apprécié
Plein question:
J'ai besoin de trouver un moyen de lancer une ligne de commande, commande en csharp et de capturer sa sortie. Je sais comment le faire en Perl, ci-dessous le code que j'utiliserais 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`;
Des suggestions sur la façon de le faire dans csharp serait la bienvenue. Jusqu'à présent j'ai essayé à l'aide de la RegistryKey OurKey = Registre.Les utilisateurs de la méthode et elle fonctionne très bien mais je ne peux pas interroger le registre sur un ordinateur distant.
S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.
SOLUTION:(Merci à @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");
}
source d'informationauteur toosweetnitemare
Vous devez vous connecter pour publier un commentaire.
Vous pourriez avoir à modifier un peu, mais voici quelques (légèrement modifié à partir de l'original) un code qui redirige stdout et stderr pour un processus: