【问题标题】:NSIS: get current user before RequestExecutionLevel adminNSIS:在 RequestExecutionLevel 管理员之前获取当前用户
【发布时间】:2019-04-05 12:44:23
【问题描述】:

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

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

RequestExecutionLevel admin

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

【问题讨论】:

    标签: installation nsis


    【解决方案1】:

    微软指南说:

    Certification requirements for Windows Desktop Apps

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

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

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

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

    【讨论】:

    • 我的应用程序安装在 %ProgramFiles% 但安装后我运行应用程序并将登录信息写入用户 %AppData% 但就像我像管理员一样运行应用程序(因为安装程序应用程序需要管理员权限) 它在管理 AppData 中写入
    • 使用我链接的插件之一,或者只是禁用完成页面上的运行复选框。
    • 你用过函数吗?您需要将插件命令作为函数而不是命令行。有关详细信息,请参阅 MUI 自述文件。并且使用install 参数运行您的应用程序是错误的,当您的应用程序稍后由其他用户运行时会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2017-11-25
    • 2013-05-04
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多