inno-setup – 从以管理员身份运行的Inno Setup安装程序为当前登
关于创建(Inno Setup)安装程序的一个非常常见的问题是围绕从使用提升/管理员权限运行的安装程序访问/修改特定用户(当前登录用户)的配置文件.
这样做有许多缺点,并且容易出错. 所有现有的答案都包含问题的一部分(注册表,文件,桌面图标等).这个问题的目的是通过所有可能的方法收集解决全球问题的答案. 解决方法
Inno Setup没有任何内置机制来访问或修改使用提升/管理员权限运行的安装程序的用户环境.
实现这一目标的所有尝试都依赖于以下技巧: > 修改或访问登录用户的注册表: 访问登录用户的AppData文件夹: 虽然这些不可靠,但至少出于以下原因: >当前用户没有管理员权限时,他需要在安装程序UAC提示符下输入管理员凭据.这会将安装程序切换到其他用户.因此{user *}常量不会引用启动安装的用户. 此问题的唯一正确的通用解决方案是仅将用户环境的设置推迟到实际的用户会话. 最简单的方法是让应用程序在第一次运行时进行设置. 安装程序只能部署应用程序可用于设置的共享文件. 如果由于某种原因无法修改应用程序,则必须迭代所有帐户并进行修改: >对于文件:Inno Setup Create individual shortcuts on all desktops of all users 如果您需要确保将设置分发到仅在安装后创建的帐户,请参阅How to install files for each user,including future new users,in Inno Setup? 如果您对仅为登录用户设置应用程序这一事实感到满意,请使用 [Setup] PrivilegesRequired=lowest 然后{user *}常量将正确引用当前用户的文件夹. 如果您仍需要安装的某个子任务的管理员权限,则只能请求子任务的权限提升: > Inno Setup – Register components as an administrator 如果要通过显式运行具有管理员权限的安装程序来防止用户违反此规定,请参阅 > Can’t get Inno Setup postinstall Run item to runasoriginaluser或 或者您可以通过编程方式找出当前Windows登录会话的帐户: > Determine if Administrator account that runs elevated Inno Setup installer is the same as the account of the current Windows logon session (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |