我的C#WinForm应用程序运行另一个具有管理员权限的“devcon.exe”控制台应用程序:
var startInfo = new ProcessStartInfo
{
FileName = fileName, // filename C:\....\devcon.exe
WindowStyle = ProcessWindowStyle.Hidden, // we don't want to see devcon.exe window
Arguments = "restart " + deviceID, // some arguments for devcon.exe console application
Verb = "runas" // run as administrator
};
Process.Start(startInfo).WaitForExit();
因此,每次启动devcon.exe时都会显示GUI UAC提示符。
但用户不希望每次都看到GUI UAC提示。首次启动devcon.exe
时,只能显示一次GUI UAC提示符 使用/ savecred运行runas.exe可以帮助保存管理员密码,并在首次启动devcon.exe时只询问一次:Process.Start(“cmd.exe”,@“/ C runas.exe / savecred / user:”+“admin”+“”+“\”C:\ ... \ devcon.exe restart“+ deviceID +“\”“);
但在这种情况下会显示控制台提示(它要求输入管理员密码)。
用户不希望看到控制台提示,他们希望看到GUI UAC提示。在这种情况下,如何显示GUI UAC提示而不是控制台提示?如果runas.exe使用/ savecred是不可能的,如何在首次启动devcon.exe时只保存一次管理密码?
P.S。我不知道管理员密码,用户应自行输入。
答案 0 :(得分:0)
正如KooKiz所述,您可以要求您的用户以管理员身份启动主进程,以便它不再提示UAC运行其他程序。
How to request administrator permissions when the program starts?