installation - NSIS:在 RequestExecutionLevel 管理员之前获取当前用户
问题描述
我的安装程序在所有用户中运行,并将用户信息保存在 AppData 文件夹中。
问题是,安装完成后,通过an启动一个可执行文件,Exec
并以管理员用户身份启动,所以所有的会话数据都存储在管理员的AppData中。我想以管理员身份运行安装,但最后一步以当前用户身份运行。
RequestExecutionLevel admin
我可以以当前用户身份启动我的应用程序吗?在请求管理员权限之前,我可以保留当前用户吗?
解决方案
微软指南说:
- 默认情况下,应用程序必须安装到正确的文件夹
- 10.6 您的应用程序必须在首次运行时写入用户数据,而不是在每台机器安装期间写入用户数据。安装应用程序时,没有正确的用户位置来存储数据。
如果您有某种默认用户数据/模板,您应该将其安装在%ProgramFiles%
或者%ProgramData%
您的应用程序应该将该数据复制到%AppData%
用户第一次运行您的应用程序时。
ShellExecAsUser和StdUtils插件可用于在完成页面上以“真实”用户身份执行您的应用程序。
UAC 插件允许您访问“真实”用户和%AppData%
注册表,但我不推荐这种方法,因为该插件很难使用,而且它确实会促进不正确的行为。您很可能最终得到一个仅适用于初始用户而不适用于同一台机器上的其他用户的安装模式。
推荐阅读
- css - 尝试设置 body.margin css 时看到奇怪的行为
- kubernetes - Multi-Cluster Kubernetes - 跨集群通信
- java - 尽管我已经更新了数据,但数组调用返回 null
- javascript - 在 JavaScript 中将数据属性转换为访问器属性,反之亦然
- delphi - 运行类似 shellexecute 的函数时如何阻止 VCL 线程
- python - Spark Scala - 移动平均对齐结果与熊猫函数
- excel - Excel计算日期之间差异在一个范围内的单元格
- bluetooth - 将多个蓝牙设备分组
- django - 模型应该只有一个实例
- swift - 如何获取坐标以在 Mapkit Swift 上显示图钉