使用 UAC 提权

Rights elevation with UAC

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

我注意到修补过程只有在我选择 "run as administrator" 时才会运行。

看来我需要"create and embedd an Application Manifest",根据这个:

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

所以我的问题是:

像我这样的应用程序(可以给自己打补丁)需要管理员权限是否正常,这是我应该走的路吗?

谢谢

如果您的应用程序通常不需要提升,那么我不建议您在您的清单中请求它,因为这会让您的用户非常恼火。 Firefox 使用 NT 服务绕过 UAC 对话框,但除非您的更新非常频繁,否则我真的不推荐这样做。

我建议您编写一个小的更新应用程序来进行修补。它可以在其清单中请求提升,这样用户只需要在需要修补的时候提升。如果您不想在您的包中添加另一个 .exe,您可以在需要修补时使用 runas verb 再次执行。

编辑 NSIS 脚本以包含此行:

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

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