单个方法的管理员权限

时间:2011-01-31 16:33:51

标签: c# security

我目前正在开发ApplicationLauncher / Autoupdater。 因此,要将应用程序安装/更新为“Program Files”,我需要请求管理员权限。

好吧,因为如果找到新版本,Updater只需要写一些内容,我只尝试了 如果找到新版本,请求权限。

在应用程序启动之前,每次都会执行更新程序,因此无需向管理员询问“每次”......

我搜索了很多,发现了以下内容:

[PrincipalPermission(SecurityAction.Demand, Role = @"Administrators")]
    private void InstallOrUpdate(AppItem appItem)

但我尝试这样做,更新程序抛出SecurityException ...

  

请求委托人许可失败。

我做错了什么?

祝你好运, dognose

2 个答案:

答案 0 :(得分:3)

一旦运行,您无法提升应用程序的权限。为了请求Administrators角色,需要在可执行文件的启动时完成。

您最好的选择是让您的更新程序触发不同的可执行文件以执行InstallOrUpdate,或者重新运行自身(可能使用不同的命令行参数),同时请求提升权限点。

答案 1 :(得分:2)

UAC提升是每进程,即整个进程被提升,而不是每个方法。最好的做法是创建一个需要提升权限的特定操作流程,并在实际需要执行某些工作时从更新程序启动该流程。 This might help