有时以管理员身份运行
本文关键字:身份 运行 管理员 | 更新日期: 2023-09-27 17:47:46
我有一个程序,大部分时间都需要以普通用户的身份运行,但偶尔我需要停止并启动服务。我该如何制作一个大部分时间都以普通用户身份运行,但由于某些功能而升级到管理员模式的程序?
进程一旦运行就不能提升,但您可以:-
将进程重新启动为提升
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提示。
最佳方法取决于您的受众(是否为管理员类型)和提升操作的频率。
据我所知,您需要启动一个以管理员身份运行的单独进程。一旦流程已经启动,就不能提升它。
请参阅此问题。
您需要使用所谓的模拟。。
[http://support.microsoft.com/kb/306158][1]
上面展示了ASP是如何实现的。Net应用程序,但代码可能与您的需求几乎相同。