C#如何在运行时获取管理员权限

5
有人知道如何在运行时获得管理员权限吗?请不要建议这样做:
<requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
</requestedPrivileges>

希望有人知道如何做到这一点。

我的意思是,例如,考虑这种情况:我有一个应用程序,它在没有管理员权限的情况下运行,并且通常不会对您的计算机进行任何更改。但是,如果您单击某个特定按钮,该应用程序将请求管理员权限,然后执行某些必要操作。


2
在运行时你是什么意思?权限将始终在运行时被评估。 - David L
这里没有字符计数限制。为了最大程度的清晰,请拼写单词并详细解释您的问题。请访问[帮助]并学习[提问]以获取更多有关如何做出积极贡献的提示。 - Ňɏssa Pøngjǣrdenlarp
@Mathews 某人 - NotTheBatman
1个回答

9

无法更改当前正在运行进程的特权级别。但您可以启动一个新的进程,并请求提升权限。Process.Start() 支持 "runas" 标志。

        using (Process configTool = new Process())
        {
            configTool.StartInfo.FileName = "foo.exe"
            configTool.StartInfo.Arguments = "--bar";
            configTool.StartInfo.Verb = "runas";
            configTool.Start();
            configTool.WaitForExit();
        }

请参见以编程方式提升进程特权?

您可以将应用程序的功能分离到第二个可执行文件中,或使用“runas”以提升的权限重新启动您的应用程序。


一个只是链接到其他帖子的帖子并不被视为答案。 - Ňɏssa Pøngjǣrdenlarp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接