【问题标题】:Run executable as admin in InstallScript在 InstallScript 中以管理员身份运行可执行文件
【发布时间】:2011-05-23 15:42:57
【问题描述】:

我正在使用以下脚本以管理员身份运行可执行文件:

#include "ifx.h" export prototype MyFunction(HWND); /////////////////////////////////////////////////////////////////////////////// // // Function: MyFunction // // Purpose: Calls into Companion to execute the detect camera and all init setup // code // /////////////////////////////////////////////////////////////////////////////// function MyFunction(hMSI) begin if REMOVEALLMODE ==0 then //only run if they are installing the product LAAW_SHELLEXECUTEVERB = "runas"; LaunchApplication (INSTALLDIR ^ "Companion.exe", "-detect -test -wsdl -exit -nimbus", "", SW_NORMAL, 0, LAAW_OPTION_WAIT_INCL_CHILD | LAAW_OPTION_USE_SHELLEXECUTE); endif; end;

在 XP 上,上面的脚本将打开一个对话框,询问用户应该以哪个用户身份运行可执行文件。这允许他们选择管理员来运行可执行文件。但是,在 Windows 7 上,什么也没有发生。安装不向用户询问任何内容,安装失败。

关于为什么会这样的任何想法或关于如何以管理员身份运行可执行文件的任何其他建议?

【问题讨论】:

    标签: installshield installscript


    【解决方案1】:

    当您在 Win7 下(我的意思是在 InstallShield 之外)启动应用程序时会发生什么?

    我认为这可能是由于 UAC。由 installscript 启动的程序不会自动从 installshield 脚本继承管理员权限。

    【讨论】:

    • 使用 LAAW_SHELLEXECUTEVERB = "runas" 应该会导致 W7 和 Vista 提供 UAC 提示。
    【解决方案2】:

    您可以像这样区分 XP 和所有非 XP 操作系统:

    if ( SYSINFO.WINNT.bWinXP ) then
        LAAW_SHELLEXECUTEVERB = "open"; // target PC is on Windows XP
    else
        LAAW_SHELLEXECUTEVERB = "runas"; // Windows 7 (or Vista)
    endif; 
    

    这是来自 InstallShield 帮助库的提示:

    如果您在运行的系统上使用 LAAW_OPTION_USE_SHELLEXECUTE Windows Vista 或更高版本,并且您想使用 完整的管理员帐户(类似于右键单击 要运行的可执行文件并单击以管理员身份运行),设置 LAAW_SHELLEXECUTEVERB 在使用 LaunchApplication 之前运行 脚本:

    LAAW_SHELLEXECUTEVERB = "runas";

    这可确保应用程序始终以全速运行 管理员权限不管应用程序是否被 启动有一个带有相关设置的应用程序清单。注意 这可能会触发用户帐户控制 (UAC) 提示以征求同意或 证书。

    在运行早于 Windows Vista 的操作系统的系统上,如果 使用 runas 时,会显示一个 Run As 对话框。行为是 类似于右键单击要运行的可执行文件并单击 运行方式。此对话框使最终用户能够选择用户 应该用于运行应用程序的帐户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2016-12-11
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多