【问题标题】:Executing multiple exe at the end of installation in Advanced Installer在高级安装程序中安装结束时执行多个 exe
【发布时间】:2015-07-10 11:06:58
【问题描述】:

我想在安装完成后执行两个文件,但我不希望它们显示 UAC 对话框。我尝试使用最大执行级别,但它不起作用。

【问题讨论】:

    标签: installation windows-installer advanced-installer


    【解决方案1】:

    我假设可执行文件是在“安装执行”序列之外启动的。我猜您正在尝试在用户单击“安装完成”对话框上的“完成”按钮时启动这些可执行文件。
    使用 UAC,应用程序和任务始终在非管理员帐户的安全上下文中运行,除非管理员特别授权管理员级别的系统访问权限。即即使您以管理员身份登录,您运行的任何应用程序都不会以完全管理权限运行。每个需要管理员访问令牌的应用程序都必须提示管理员同意。当管理员登录时,会为用户创建两个单独的访问令牌:标准用户访问令牌和管理员访问令牌。标准用户访问令牌包含与管理员访问令牌相同的用户特定信息,但删除了管理 Windows 权限和 SID。标准用户访问令牌用于启动应用程序。然后使用标准用户访问令牌来显示桌面 (Explorer.exe)。 Explorer.exe 是所有其他用户启动的进程继承其访问令牌的父进程。因此,所有应用程序都以标准用户身份运行,除非用户提供同意或凭据以批准应用程序使用完整的管理访问令牌。

    在您的情况下,我假设正在从非提升的命令提示符安装 msi 包。因此,msi 包以标准用户权限运行。因此,在 InstallExecute 序列之外从此 msi 包生成的任何子进程都将以标准用户权限运行。

    要使应用程序符合 UAC,应用程序需要在应用程序清单中指定“请求的执行级别”。请求的执行级别指定应用程序所需的权限。

    您的可执行文件在应用程序清单中请求的执行级别是什么? 您可以使用 Sysinternals 套件中名为“sigcheck.exe”的工具来验证在可执行文件的嵌入式清单中指定的请求执行级别。

    验证请求的执行级别。 我认为它设置为“requireAdministrator”,因此您被提示提升。将此更改为“asInvoker”,然后您的问题应该得到解决。

    您可以在以下位置阅读有关 UAC 的更多信息:

    https://technet.microsoft.com/en-us/library/jj574202.aspx

    问候,

    基兰·赫格德

    【讨论】:

    • 您的问题解决了吗?您是否需要有关您的问题的更多帮助
    【解决方案2】:

    当你说你使用了“最大执行级别”时,你是什么意思? 您是否在可执行文件的清单中使用“highestAvailable”的级别值?

    看看 MSDN 文章以供参考:

    https://msdn.microsoft.com/en-us/library/bb384691.aspx

    如果启动的可执行文件不需要任何特殊权限即可运行,则应坚持使用“asInvoker”级别。这将阻止可执行文件显示 UAC 对话框。

    问候, 基兰·赫格德

    【讨论】:

    • 我的意思是我正在以管理员身份运行 msi。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2013-08-31
    相关资源
    最近更新 更多