0

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

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

StartInfo.CreateWindow = false不会因为它只是在另一个 cmd 窗口中启动而成立。

下面的代码:

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

2 回答 2

2

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

要绕过该框,您可能可以在启动该过程之前尝试以编程方式提供凭据,但我无法测试,但如下所示:

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

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

另一个选项是禁用 UAC。但是,这不允许用户做任何他们不能正常做的事情,它可能会告诉你,如果没有以管理员身份运行的进程,你就无法进行任何更改。

于 2012-06-20T08:30:10.140 回答
0

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

于 2012-06-20T07:23:46.190 回答