I have an Windows Form application that supplies the User Name, Domain, and Password to the StartInfo, and it throws this:
System.ComponentModel.Win32Exception: The handle is invalid at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start()
When I allow the credentials to default to current user I get no such error, and the process I start works to the extent that it doesn’t need to use credentials (the creds are necessary for mapping a drive in an MSBuild script). Here’s the code that fills the start info:
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();
It isn’t that the user/psw isn’t matching, because when I provide a bad psw, for example, it catches it. So, this ‘invalid handle’ thing is happening after the cred is passed. Any ideas on what I might be omitting or screwing up?
You have to redirect your Input, Error, and Output.
for example:
Also microsoft has said the error should read, ‘Unable to redirect input.’ (used to have a link, but that no longer worked)