C#获取单一方法的管理员权限

时间:2017-02-16 05:18:50

标签: c# winforms methods admin

我有一个方法/事件Form1_Load,我想给它Administrator Rights

因为在那个方法/事件中,我将我的程序与我的扩展程序相关联,也不想以管理员身份启动应用程序,如果我这样做,程序将无法正常工作

所以我有一个代码:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]

private void Form1_Load(object sender, EventArgs e)
{
...
}

但不起作用我的应用程序给出了错误:

  

UnauthorizedAccessException

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

“将我的程序与我的扩展程序相关联”:您的设计错误。在安装程序时完成该关联。并且它完全没有问题:安装程序正在升级。

答案 1 :(得分:0)

您不会喜欢这个答案,但是您无法为一个方法提升用户,而是需要在加载时请求整个应用程序的提升。

请参阅https://msdn.microsoft.com/en-us/library/bb756929.aspx?f=255&MSPPError=-2147217396了解如何操作。

这也很有用https://code.msdn.microsoft.com/windowsapps/CSUACSelfElevation-644673d3

编辑:

如果您要执行一项任务,例如关联扩展,那么您可以在仅执行该任务的单独EXE中为其编写逻辑。然后,您可以使用

从主程序启动该EXE
 System.Diagnostics.Process.Start("<path to exe>");

如果您已按照上述链接中的建议操作,您的EXE将会运行并请求提升,并且应该能够满足您的需求。