【问题标题】:Execute a Execwait in NSIS with administrative privileges使用管理权限在 NSIS 中执行 Execwait
【发布时间】:2012-07-21 03:07:04
【问题描述】:

我想以管理员权限执行ExecWait in NSIS,我无法找到有关此问题的任何文档。

【问题讨论】:

    标签: windows installation nsis


    【解决方案1】:

    一般来说,在这种情况下,我建议整个安装程序应该run elevated,它会预先向用户明确说明需要提升。

    如果您不能这样做,那么您应该确保您要运行的程序请求管理员权限。为此,您需要使用ExecShell 启动该程序。

    如果该程序不要求管理员权限,您基本上有两种选择:

    • ExecShell 与“runas”动词一起使用并希望最好(如果用户不是管理员组的成员,则失败,UAC 已关闭或打开
    • 编写一个小型启动器应用程序,请求管理员权限,然后启动实际程序。

    【讨论】:

    • 我尝试了第二个选项(写一个带有管理员请求的小型启动器)......但它没有用。
    • @jing:提供更多细节或作为问题提出?
    • @Anders:我按照你的建议做了:父 NSIS 包只请求用户权限(RequestExecutionLevel 用户),子 NSIS 包请求管理员权限(RequestExecutionLevel 管理员)。我可以从操作系统启动孩子。但是父 NSIS 包无法使用 ExecWait 启动子包。父 NSIS 包仅在右键单击“以管理员身份运行”后才会启动子包。无论如何,我不希望这样的过程可以正常工作。
    • 你不能使用 ExecWait,你必须使用 ExecShell,因为 UAC 只是挂在 shell 中,不如 CreateProcess 深。
    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多