2012-06-20 127 views
0

我有一个运行进程来打开DeviceManager的exe文件。但不幸的是,它要求确认以提供“是”或“否”,以便长时间等待用户输入并且不会继续执行。Process.Start创建一个弹出窗口

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

StartInfo.CreateWindow = false不会将此作为保持它只是在另一个cmd窗口开始。下面

代码:

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

Yes/No对话框询问什么?允许? –

+0

什么操作系统您使用的?从Windows Vista开始,它有一种名为UAC的机制,所以它会要求用户确认是否像这样运行任务!迟早,用户必须至少一次通过该弹出对话框。 –

+0

是/否框 - 权限框我的意思是。 我使用Win7操作系统,所以我应该禁用UAC。我可以做些什么来避免弹出并同时打开DeviceManager。 –

回答

0

父进程应该由管理员帐户下运行。 也请显示所有代码。

+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。但是,这不会允许用户执行任何他们无法正常执行的操作,它可能会告诉您,如果没有以管理员身份运行进程,则无法进行任何更改。