Domanda

Ho un'applicazione Windows Form che fornisce il nome utente, il dominio e la password a StartInfo e genera questo:

System.ComponentModel.Win32Exception: L'handle non è valido    at System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo startInfo)    su System.Diagnostics.Process.Start ()

Quando autorizzo l'impostazione predefinita delle credenziali all'utente corrente, non ricevo questo errore e il processo che avvio funziona nella misura in cui non è necessario utilizzare le credenziali (le credenziali sono necessarie per mappare un'unità in uno script MSBuild ). Ecco il codice che riempie le informazioni di inizio:

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();

Non è che l'utente / psw non corrisponda, perché quando fornisco un cattivo psw, ad esempio, lo cattura. Quindi, questo "handle non valido" cosa sta succedendo dopo che il credito è passato. Qualche idea su cosa potrei omettere o rovinare?

È stato utile?

Soluzione

Devi reindirizzare input, errori e output.

ad esempio:

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);
 }

Inoltre, Microsoft ha dichiarato che l'errore dovrebbe essere ", Impossibile reindirizzare l'input." (usato per avere un link, ma che non funzionava più)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top