2

因为我想cmd在进程中以管理权限运行,但弹出窗口甚至将其设置WindowStyle为隐藏。

 ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + @"cscript.exe DTCSECURITY.vbs");
 ProcessInfo.CreateNoWindow = true;.
 ProcessInfo.WindowStyle = ProcessWindowStyle.Hidden;

 // Here with i pass the privillage
 ProcessInfo.UserName = @"administrator";
 ProcessInfo.Password = StringToSecureString("password12$");    

 process = Process.Start(ProcessInfo);
 process.WaitForExit();

但是,如果我评论特权代码,则不会弹出闪烁。

4

2 回答 2

1

尝试设置ProcessStartInfo.UseShellExecutefalse(它是true默认情况下)。

ProcessStartInfo.CreateNoWindow 属性说:

如果 UseShellExecute 属性为 true 或 UserName 和 Password 属性不为 null,则忽略 CreateNoWindow 属性值并创建一个新窗口。

于 2013-01-09T14:55:03.417 回答
1

我认为你应该设置WorkingDirectory属性。来自MSDN

如果提供了 UserName 和 Password,则必须设置 WorkingDirectory 属性。如果未设置该属性,则默认工作目录为 %SYSTEMROOT%\system32。


如果 UserName 属性不为 null 或为空字符串,则 UseShellExecute 属性必须为 false,否则在调用 Process.Start(ProcessStartInfo) 方法时将引发 InvalidOperationException。

于 2013-01-09T14:17:52.053 回答