在 Advanced Installer 中安装结束时执行多个 exe

Executing multiple exe at the end of installation in Advanced Installer

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

我假设可执行文件是在“安装执行”序列之外启动的。我猜您正试图在用户单击“安装完成”对话框中的“完成”按钮时启动这些可执行文件。

使用 UAC,应用程序和任务总是 运行 在非管理员帐户的安全上下文中,除非管理员特别授权对系统进行管理员级别的访问。也就是说,即使您以管理员身份登录,您 运行 的任何应用程序也不 运行 具有完全管理权限。每个需要管理员访问令牌的应用程序都必须提示管理员同意。当管理员登录时,会为用户创建两个单独的访问令牌:标准用户访问令牌和管理员访问令牌。

标准用户访问令牌包含与管理员访问令牌相同的用户特定信息,但管理 Windows 权限和 SID 被删除。标准用户访问令牌用于启动应用程序。然后使用标准用户访问令牌来显示桌面 (Explorer.exe)。 Explorer.exe 是所有其他用户启动的进程继承其访问令牌的父进程。因此,所有应用程序 运行 作为标准用户,除非用户提供许可或凭据以批准应用程序使用完整的管理访问令牌。

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

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

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

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

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

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