许多Windows程序在启动时都能够运行更新,而无需管理员提示。同样,我的程序需要自行更新,无需任何用户输入。任何登录的用户都需要能够使用该程序。
我的程序已经可以找到新的更新,下载并运行它们,但NSIS安装程序/更新程序需要管理员权限。
使用Free Pascal和NSIS实现这一点需要做些什么,而不是让所有用户都能访问安装目录?
答案 0 :(得分:0)
您的应用程序是否需要执行此操作?你多久一次计划推出更新?
每次需要安装更新时,大多数应用程序都可以通过UAC进行升级来实现。
如果您绝对觉得需要“绕过UAC”,那么您可以执行Firefox的操作;安装NT Service。您不在安装程序中启动此服务,但必须调用GetNamedSecurityInfo
+ SetNamedSecurityInfo
,以便将Everyone组的SERVICE_START访问权限添加到ACL。作为普通用户运行的应用程序可以在有更新并且服务进行更新时启动此服务。
从安全角度来看,这里存在一些危险,因为该服务可以完全访问系统运行,因此您必须确保您的更新已签名,这样如果有人能够启动,它就不会成为一个易于使用的后门中间人袭击的人。
我个人认为如果你的程序不是太大,你应该考虑按用户安装...