加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

inno-setup – 从以管理员身份运行的Inno Setup安装程序为当前登

发布时间:2020-12-15 04:11:39 所属栏目:大数据 来源:网络整理
导读:关于创建(Inno Setup)安装程序的一个非常常见的问题是围绕从使用提升/管理员权限运行的安装程序访问/修改特定用户(当前登录用户)的配置文件. 这样做有许多缺点,并且容易出错. 所有现有的答案都包含问题的一部分(注册表,文件,桌面图标等).这个问题的目的是通
关于创建(Inno Setup)安装程序的一个非常常见的问题是围绕从使用提升/管理员权限运行的安装程序访问/修改特定用户(当前登录用户)的配置文件.

这样做有许多缺点,并且容易出错.

所有现有的答案都包含问题的一部分(注册表,文件,桌面图标等).这个问题的目的是通过所有可能的方法收集解决全球问题的答案.

解决方法

Inno Setup没有任何内置机制来访问或修改使用提升/管理员权限运行的安装程序的用户环境.

实现这一目标的所有尝试都依赖于以下技巧:

> runasoriginaluser flag或ExecAsOriginalUser function.一些例子:

修改或访问登录用户的注册表:
Inno Setup Creating registry key for logged in user (not admin user)或
How to read registry HKCU for logged In user from Inno Setup installer running as administrator

访问登录用户的AppData文件夹:
Inno Setup always installs into admin’s AppData directory或
Inno Setup Using {localappdata} for logged in user或
Inno Setup – puts user files in admin documents.
>或使用{user *} constants.

虽然这些不可靠,但至少出于以下原因:

>当前用户没有管理员权限时,他需要在安装程序UAC提示符下输入管理员凭据.这会将安装程序切换到其他用户.因此{user *}常量不会引用启动安装的用户.
>当用户使用提升的权限显式运行安装程序时,例如通过右键单击安装程序并选择“以管理员身份运行”或从另一个提升的应用程序(文件管理器)运行它,runasoriginaluser标志或ExecAsOriginalUser函数的“原始用户”将已升级.
>在企业环境中,应用程序由管理员安装,管理员不是将使用该应用程序的用户.

此问题的唯一正确的通用解决方案是仅将用户环境的设置推迟到实际的用户会话.

最简单的方法是让应用程序在第一次运行时进行设置.

安装程序只能部署应用程序可用于设置的共享文件.

如果由于某种原因无法修改应用程序,则必须迭代所有帐户并进行修改:

>对于文件:Inno Setup Create individual shortcuts on all desktops of all users
>对于注册表:Uninstall auto-run registry entries for all users

如果您需要确保将设置分发到仅在安装后创建的帐户,请参阅How to install files for each user,including future new users,in Inno Setup?

如果您对仅为登录用户设置应用程序这一事实感到满意,请使用PrivilegesRequired=lowest

[Setup]
PrivilegesRequired=lowest

然后{user *}常量将正确引用当前用户的文件夹.

如果您仍需要安装的某个子任务的管理员权限,则只能请求子任务的权限提升:

> Inno Setup – Register components as an administrator
> Inno Setup – Access unprivileged account folders from installer that requires privileges

如果要通过显式运行具有管理员权限的安装程序来防止用户违反此规定,请参阅

> Can’t get Inno Setup postinstall Run item to runasoriginaluser或
>我对How to write to the user’s My Documents directory with installer when the user used ‘Run As Administrator’的回答.

或者您可以通过编程方式找出当前Windows登录会话的帐户:

> Determine if Administrator account that runs elevated Inno Setup installer is the same as the account of the current Windows logon session

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读