我有一个运行进程打开DeviceManager的exe。但不幸的是,它要求确认提供“是”或“否”等待用户输入很长时间并且不继续执行。
如何摆脱这个?我不想再提供确认,因为我不想暂停EXE运行。
StartInfo.CreateWindow = false
不适用于此,因为它只是在另一个cmd窗口中启动。
以下代码:
Process p = new Process();
p.StartInfo.FileName = "devcon.exe";
p.StartInfo.CreateNoWindow = false;
p.Start();
答案 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)
父进程应由管理员帐户运行。 同时显示所有代码。