Process.Start创建一个弹出窗口

时间:2012-06-20 07:08:36

标签: c# process

我有一个运行进程打开DeviceManager的exe。但不幸的是,它要求确认提供“是”或“否”等待用户输入很长时间并且不继续执行。

如何摆脱这个?我不想再提供确认,因为我不想暂停EXE运行。

StartInfo.CreateWindow = false不适用于此,因为它只是在另一个cmd窗口中启动。

以下代码:

Process p = new Process();
p.StartInfo.FileName = "devcon.exe";
p.StartInfo.CreateNoWindow = false;
p.Start();

2 个答案:

答案 0 :(得分:2)

您看到的消息框是UAC(用户帐户控制),自Vista开始实施。

要绕过该框,您可以尝试在启动流程之前以编程方式提供凭据,我无法测试但是这样:

var processInfo = new ProcessStartInfo 
{ 
    FileName = "devcon.exe", 
    UserName = "Administrator", 
    Domain = "yourdomain or leave blank", 
    Password = adminpassword, 
    UseShellExecute = false,
}; 
Process.Start(processInfo);

否则,用户必须拥有管理员权限或密码!

另一种选择是禁用UAC。但是,这不允许用户执行任何他们无法正常执行的操作,它可能会告诉您如果没有以管理员身份运行该流程,则无法进行任何更改。

答案 1 :(得分:0)

父进程应由管理员帐户运行。 同时显示所有代码。