我有一个方法/事件Form1_Load
,我想给它Administrator Rights
因为在那个方法/事件中,我将我的程序与我的扩展程序相关联,也不想以管理员身份启动应用程序,如果我这样做,程序将无法正常工作
所以我有一个代码:
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
private void Form1_Load(object sender, EventArgs e)
{
...
}
但不起作用我的应用程序给出了错误:
UnauthorizedAccessException
我该如何解决这个问题?
答案 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将会运行并请求提升,并且应该能够满足您的需求。