2011-01-31 140 views
5

Im当前正在使用ApplicationLauncher/Autoupdater。 因此,要安装/更新应用程序到“Program Files”,我需要请求管理员权限。单一方法的管理员权限

那么,因为Updater只需要写一些东西,如果新的版本被发现,我试图只 请求权限,如果发现新的版本。

的更新执行每次,应用程序启动之前,所以要求“每次”为Adminrights是无解...

我搜索了很多,发现如下:

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

但文我试着这个,更新器抛出SecurityException ...

请求主体权限失败。

我在做什么错?

此致 dognose

回答

3

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

您的最佳选择是让您的更新程序启用不同的可执行文件来执行InstallOrUpdate,或者在此时重新运行自身(使用不同的命令行参数)。

+0

当我在Windows中进行管理工作时,我看到窗体中带有管理图标的按钮。当我点击按钮时,UAC要求提升特权。你是否说过,对于每个管理按钮,Windows正在启动一个新进程?或者在那里发生了不同的事情? – Phil 2011-01-31 16:52:01

2

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