Frage

Ich habe eine Windows Form-Anwendung, die die Benutzername, Domäne und Passwort an die Startinfo liefert, und es wirft dies:

System.ComponentModel.Win32Exception: Das Handle ist ungültig    bei System.Diagnostics.Process.StartWithCreateProcess (Processstartinfo)    bei System.Diagnostics.Process.Start ()

Wenn erlaube ich die Anmeldeinformationen des aktuellen Benutzers auf Standard ich keine solche Fehlermeldung erhalten, und der Prozess I Arbeiten in dem Umfang beginnen, dass es keine Anmeldeinformationen nicht verwenden müssen (die creds ein Laufwerk für die Abbildung in einem MSBuild-Skript notwendig sind ). Hier ist der Code, der die Startinfo füllt:

Process p = new Process();
ProcessStartInfo si = new ProcessStartInfo(buildApp, buildArgs);
si.WorkingDirectory = msBuildWorkingDir;
si.UserName = txtUserName.Text;
char[] psw = txtPassword.Text.ToCharArray();
SecureString ss = new SecureString();
for (int x = 0; x < psw.Length; x++)
{
    ss.AppendChar(psw[x]);
}
si.Password = ss;
si.Domain = "ABC";
si.RedirectStandardOutput = true;
si.UseShellExecute = false;
si.WorkingDirectory = txtWorkingDir.Text;
p.StartInfo = si;
p.Start();

Es ist nicht, dass der Benutzer / PSW ist nicht passend, denn wenn ich einen schlechten PSW aus, zum Beispiel, es es fängt. Also, das „ungültiges Handle“, was geschieht, nachdem die cred übergeben wird. Alle Ideen, was ich könnte das Weglassen oder vermasseln?

War es hilfreich?

Lösung

Sie haben Ihren Input, Fehler und Ausgabe zu umleiten.

Beispiel:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
 info.UseShellExecute = false;
 info.RedirectStandardInput = true;
 info.RedirectStandardError = true;
 info.RedirectStandardOutput = true;
 info.UserName = dialog.User;

 using (Process install = Process.Start(info)) {
       string output = install.StandardOutput.ReadToEnd();
       install.WaitForExit();
       // Do something with you output data       
    Console.WriteLine(output);
 }

Auch hat Microsoft sagte, die Fehler lesen sollte, „Kann nicht Eingang umleiten.“ (Verwendet, um eine Verbindung zu haben, aber das nicht mehr funktionierte)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top