我目前正在开发ApplicationLauncher / Autoupdater。 因此,要将应用程序安装/更新为“Program Files”,我需要请求管理员权限。
好吧,因为如果找到新版本,Updater只需要写一些内容,我只尝试了 如果找到新版本,请求权限。
在应用程序启动之前,每次都会执行更新程序,因此无需向管理员询问“每次”......
我搜索了很多,发现了以下内容:
[PrincipalPermission(SecurityAction.Demand, Role = @"Administrators")]
private void InstallOrUpdate(AppItem appItem)
但我尝试这样做,更新程序抛出SecurityException ...
请求委托人许可失败。
我做错了什么?
祝你好运, dognose
答案 0 :(得分:3)
一旦运行,您无法提升应用程序的权限。为了请求Administrators角色,需要在可执行文件的启动时完成。
您最好的选择是让您的更新程序触发不同的可执行文件以执行InstallOrUpdate
,或者重新运行自身(可能使用不同的命令行参数),同时请求提升权限点。
答案 1 :(得分:2)
UAC提升是每进程,即整个进程被提升,而不是每个方法。最好的做法是创建一个需要提升权限的特定操作流程,并在实际需要执行某些工作时从更新程序启动该流程。 This might help