3

我有一个程序大部分时间都需要以普通用户的身份运行,但有时我需要停止并启动一项服务。如何制作一个大多数时间以普通用户身份运行但针对某些功能提升为管理员模式的程序?

4

3 回答 3

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 提示。

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

于 2008-11-20T04:06:25.500 回答
1

据我所知,您需要启动一个以管理员身份运行的单独进程。一旦一个进程已经启动,你就不能提升它。

看到这个问题

于 2008-10-30T00:45:00.483 回答
0

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

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

上面显示了如何为 ASP.Net 应用程序实现它,但代码可能与您的需求几乎相同。

于 2008-10-30T00:38:43.927 回答