有时以管理员身份运行

本文关键字:身份 运行 管理员 | 更新日期: 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应用程序,但代码可能与您的需求几乎相同。