我有一个程序需要在大多数时间以普通用户身份运行,但偶尔我需要停止并启动服务。我如何制作一个大多数时间以普通用户身份运行的程序,但是为某些功能升级到管理员模式?

有帮助吗?

解决方案

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

请参阅此问题

其他提示

一旦流程运行,您就无法提升流程,但您可以: -

以提升

重新启动流程
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应用程序完成它,但代码可能与您的需求几乎相同。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top