我正在使用特殊的用户、域和密码启动进程。尽管我告诉 C# 隐藏控制台窗口,但它会显示出来。
这是我的代码:
Process process = new Process();
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.UserName = strUsername;
process.StartInfo.Domain = strDomain;
process.StartInfo.Password = secPassword;
process.StartInfo.FileName = "PsExec.exe";
process.StartInfo.Arguments = @"/accepteula -s \\" + strServername + @"program.exe";
process.Start();
process.WaitForExit();
我可以在另一个论坛中找到一些提示:
如果在设置 ProcessStartInfo..::.UserName 和 ProcessStartInfo..::.Password 属性的情况下调用 Start(ProcessStartInfo) 方法,则会调用非托管 CreateProcessWithLogonW 函数,即使 CreateNoWindow 属性值也会在新窗口中启动进程为 true 或 WindowStyle 属性值为 Hidden。
其实,我对这个说法并不满意……
提前致谢。
干杯亚历克斯