NSIS:在RequestExecutionLevel管理员之前获取当前用户

时间:2019-04-05 12:44:23

标签: installer nsis

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

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

RequestExecutionLevel admin

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

1 个答案:

答案 0 :(得分:0)

Microsoft准则说:

  

Certification requirements for Windows Desktop Apps

     
      
  • 应用程序默认情况下必须安装到正确的文件夹      
        
    • 10.6您的应用程序必须在首次运行时写入用户数据,而不是在按机器安装的安装过程中写入用户数据。安装该应用程序后,没有正确的用户位置可用于存储数据。
    •   
  •   

如果您有某种默认的用户数据/模板,则应将其安装在%ProgramFiles%%ProgramData%中,并且应用程序应在用户首次运行您的应用程序时将其复制到%AppData%应用。

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

UAC plug-in允许您访问“真实”用户%AppData%和注册表,但是我不推荐这种方法,因为该插件难以使用,并且确实会导致不正确的行为。您很有可能最终会获得仅适用于初始用户而不适用于同一台计算机上其他用户的安装模式。