我有一个程序需要在大多数时间以普通用户身份运行,但偶尔我需要停止并启动服务。我如何制作一个大多数时间以普通用户身份运行的程序,但是为某些功能升级到管理员模式?
答案 0 :(得分:2)
一旦流程运行,您就无法提升流程,但您可以: -
private void elevateCurrentProcess()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName = Application.ExecutablePath;
startInfo.Verb = "runas";
try
{
Process p = Process.Start(startInfo);
}
catch
{
// User didn't allow UAC
return;
}
Application.Exit();
}
这种方法意味着您的流程继续升级,UAC宣传不再是好事和坏事,取决于您的受众。
将清单设置为requireAdministrator并将其作为单独的进程启动。见sample code
此方法表示每次运行操作时都会显示UAC。
最佳方法取决于您的受众(管理员类型与否)以及提升操作的频率。
答案 1 :(得分:1)
据我所知,您需要启动一个以管理员身份运行的单独进程。一旦进程已经启动,就不会提升进程。
请参阅this question。
答案 2 :(得分:0)