题
我有一个程序需要在大多数时间以普通用户身份运行,但偶尔我需要停止并启动服务。我如何制作一个大多数时间以普通用户身份运行的程序,但是为某些功能升级到管理员模式?
解决方案
据我所知,您需要启动以管理员身份运行的单独进程。一旦进程启动,就无法提升进程。
请参阅此问题。
其他提示
一旦流程运行,您就无法提升流程,但您可以: -
以提升
重新启动流程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宣传不再是好事和坏事,取决于您的受众。
将需要提升的代码放入单独的exe
将清单设置为requireAdministrator并将其作为单独的进程启动。请参阅此示例代码
此方法表示每次运行操作时都会显示UAC。
最佳方法取决于您的受众(管理员类型与否)以及提升操作的频率。
不隶属于 StackOverflow