UAC的权利提升

时间:2017-04-13 04:52:39

标签: nsis uac elevated-privileges

我刚刚开发了一个能够自我修补的.NET程序。

我注意到只有选择“以管理员身份运行”时才会运行修补过程。

似乎我需要“创建并嵌入一个Application Manifest”,根据这个:

https://msdn.microsoft.com/en-us/library/bb756929.aspx

所以我的问题:

像我这样的应用程序(可自行修补)是否正常需要管理员权限,这是我应该走的路线吗?

由于

2 个答案:

答案 0 :(得分:0)

如果您的应用程序通常不需要提升,那么我建议您不要在清单中提出请求,因为这对您的用户来说非常烦人。 Firefox使用NT服务来绕过UAC对话框,但除非您的更新非常频繁,否则我无法推荐。

我建议您编写一个执行修补的更新程序。它可以在清单中请求提升,这样用户只需要在有补丁的情况下提升。如果您不想在捆绑包中使用其他.exe,则可以在需要修补时使用runas verb再次执行。

答案 1 :(得分:0)

编辑NSIS脚本以包含此行:

AccessControl::GrantOnFile \"$INSTDIR" "(S-1-5-32-545)" "FullAccess"

这使用户帐户可以完全访问Program Files中的应用程序文件夹,这意味着我的修补程序可以毫无问题地写入它。