单个方法的管理员权限

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

好吧,因为如果找到新版本,Updater只需要写一些东西,我试图只在发现新版本时才请求这些特权。

在应用程序启动之前,每次都会执行更新程序,因此请求“每次”管理员都没有解决方案……

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

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

但我想尝试这个,更新程序抛出一个SecurityException …

申请主要许可失败。

我究竟做错了什么?

最好的问候,dognose

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

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

UAC提升是按过程进行的 ,即整个过程是提升的,而不是单一方法。 最好的做法是创建一个需要提升权限的特定操作流程,并在实际需要执行某些工作时从更新程序启动该流程。 这可能有所帮助 。