Inno setup Innoscript-获取当前用户配置文件信息

Inno setup Innoscript-获取当前用户配置文件信息,inno-setup,pascalscript,Inno Setup,Pascalscript,我正在尝试使用innoscript创建一个应用程序。我需要在HKLM中创建/编辑注册表信息值。因此,我需要管理员权限来安装应用程序 但是,如果非管理员用户尝试安装应用程序,innoscript需要管理员用户密码,一旦他们输入管理员用户密码,每当我在安装脚本(例如HKCU)中查询注册表时,innoscript都会从管理员用户检索信息。但是我想从当前登录的用户那里获取信息。因此,程序安装在管理员用户位置下,而不是当前登录用户帐户下 当应用程序以“以管理员身份运行”或“提示管理员用户”启动时,是否有方

我正在尝试使用innoscript创建一个应用程序。我需要在HKLM中创建/编辑注册表信息值。因此,我需要管理员权限来安装应用程序

但是,如果非管理员用户尝试安装应用程序,innoscript需要管理员用户密码,一旦他们输入管理员用户密码,每当我在安装脚本(例如HKCU)中查询注册表时,innoscript都会从管理员用户检索信息。但是我想从当前登录的用户那里获取信息。因此,程序安装在管理员用户位置下,而不是当前登录用户帐户下

当应用程序以“以管理员身份运行”或“提示管理员用户”启动时,是否有方法从innoscript获取当前登录用户和用户应用程序数据位置

等待您的更新


谢谢,

一个简单的解决方法是将逻辑移到可执行文件而不是Pascal脚本。然后您可以在[Run]部分调用此可执行文件


请记住将运行项目标记为runasoriginaluser。

在每台机器的安装过程中,安装程序不应读取或修改任何每用户状态(包括HKCU)(并且无法可靠地执行此操作)。相反,您应该让应用程序自己在第一次运行时执行此操作(通过尝试读取适当的位置,并假设未找到默认值)


请记住,应用程序只安装一次,但可以由多个不同的用户运行。这种行为是必要的。

我很想对此投反对票,但我不会。这是正确的,但这是个坏建议。(原始用户有时也是管理员,这对第二个用户尝试运行应用程序没有帮助。)感谢您没有投反对票。但安装程序是否应该对单个用户的区域执行更改是主观的。许多安装程序允许您为所有用户安装,但有些安装程序也提供了仅为当前用户安装的选项。这实际上取决于安装程序提供的软件。Inno目前在安装时不支持该选项。您必须在编译时做出决定,因为提升是否发生在任何用户输入之前。如果安装是非提升的,则不能每台机器安装;如果安装被提升,那么你不应该按用户安装(因为你不能正确地安装或者不造成混乱)。