【发布时间】:2015-11-06 21:06:16
【问题描述】:
禁止用户在没有提升权限的情况下安装程序是一种常见做法,尤其是在大公司中。当用户运行安装可执行文件(.exe 或 .msi)时,会在用户访问控制允许安装之前提示用户输入这些管理员凭据。许多需要安装的程序都利用了默认的 Windows 安装程序 .msi 打包或类似的东西,但可执行文件可以执行所有相同的功能,对吧?
是不是这种常见的安装打包解决方案会告诉 Windows:“嘿,我是安装程序。正在安装一些东西。”? Windows 不会分析可执行文件的实际行为,对吧?
【问题讨论】:
-
现代应用程序(包括第三方安装程序)应在清单中包含一个条目,说明是否需要提升。对于较旧的应用程序,Windows 会尝试猜测。我不知道在多大程度上分析了可执行文件的预期行为,因为该算法从未完全记录在 AFAIK 中。但是,我们确实知道猜测是在可执行文件实际开始运行之前进行的。
-
我不确定这对 MSI 文件是如何工作的。不过,Windows Installer 可以动态提升(即在安装期间),因此它可能只是等待并且仅在被要求执行需要它的操作时才请求提升。
-
@HarryJohnston 是的,我想知道这一点。对于
.exe安装程序,Windows 似乎会在任何事情发生之前要求提升,但大多数.msi文件在执行实际需要的步骤之前不会询问。我不相信所有可执行文件都需要在我的系统上进行提升,不过,我必须使用少数.exe安装程序。 -
“现代”(这个词仍然让我难以置信)“应用程序”及其安装程序往往是按用户安装的,不需要任何提升的权限。我将使用术语“成熟”应用程序,安装程序可以是每个用户或每台机器,但往往是每台机器,因此往往需要提升。 MSI 中的这个故事非常有据可查。
标签: windows windows-installer installation uac