首页 > 解决方案 > NSIS:在 RequestExecutionLevel 管理员之前获取当前用户

问题描述

我的安装程序在所有用户中运行,并将用户信息保存在 AppData 文件夹中。

问题是,安装完成后,通过an启动一个可执行文件,Exec并以管理员用户身份启动,所以所有的会话数据都存储在管理员的AppData中。我想以管理员身份运行安装,但最后一步以当前用户身份运行。

RequestExecutionLevel admin

我可以以当前用户身份启动我的应用程序吗?在请求管理员权限之前,我可以保留当前用户吗?

标签: installationnsis

解决方案


微软指南说:

Windows 桌面应用程序的认证要求

  • 默认情况下,应用程序必须安装到正确的文件夹
    • 10.6 您的应用程序必须在首次运行时写入用户数据,而不是在每台机器安装期间写入用户数据。安装应用程序时,没有正确的用户位置来存储数据。

如果您有某种默认用户数据/模板,您应该将其安装在%ProgramFiles%或者%ProgramData%您的应用程序应该将该数据复制到%AppData%用户第一次运行您的应用程序时。

ShellExecAsUser和StdUtils插件可用于在完成页面上以“真实”用户身份执行您的应用程序

UAC 插件允许您访问“真实”用户和%AppData%注册表,但我不推荐这种方法,因为该插件很难使用,而且它确实会促进不正确的行为。您很可能最终得到一个仅适用于初始用户而不适用于同一台机器上的其他用户的安装模式。


推荐阅读