StartInfoにユーザー名、ドメイン、およびパスワードを提供するWindowsフォームアプリケーションがあり、これをスローします。
System.ComponentModel.Win32Exception: System.Diagnostics.Process.Start()のSystem.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)でハンドルが無効です
クレデンシャルを現在のユーザーにデフォルト設定することを許可すると、そのようなエラーは発生せず、開始するプロセスは、クレデンシャルを使用する必要がない範囲で機能します(クレデンシャルはMSBuildスクリプトでドライブをマッピングするために必要です)。開始情報を入力するコードは次のとおりです。
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();
たとえば、悪いpswを提供すると、それをキャッチするため、user/pswが一致していないわけではありません。したがって、この「無効なハンドル」は、credが渡された後に発生します。何を省略したり、台無しにしたりする可能性があるかについてのアイデアはありますか?