有时以管理员身份运行

Asked
Viewd500

3

我有一个程序通常需要以普通用户身份运行,但有时我需要停止并启动服务。我该如何制作一个通常以普通用户身份运行但可以升级为管理员模式的程序的功能?

3 个答案

1

据我所知,您需要启动一个以管理员身份运行的单独进程。一旦启动,就无法提升流程。

请参见此问题

0

您需要使用所谓的模拟。.

[ http://support.microsoft.com/kb/306158][1 ]

上面显示了如何为ASP.Net应用程序完成此操作,但是代码可能几乎符合您的需求。

  • 我认为这不适用于台式机,但是对于其他项目仍然有用。

    ErinOctober 30, 2008 13:44
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采取行动-好的和坏的取决于您的受众。

将需要提升的代码放入单独的exe

将清单设置为requireAdministrator并将其作为单独的进程启动。请参见示例代码

此方法意味着每次运行该操作都会提示UAC。

最佳方法取决于您的听众(无论是否是管理员类型)和提升操作的频率。