Windows如何知道我正在安装某些东西?

时间:2015-11-06 21:06:16

标签: windows installation windows-installer install uac

通常的做法是禁止用户在没有提升权限的情况下安装程序,尤其是在大公司中。当用户运行安装可执行文件(无论是.exe还是.msi)时,系统会提示用户输入这些管理员凭据,然后用户访问控制才允许安装。很多需要安装的程序都利用了默认的Windows安装程序.msi打包或类似的东西,但是可执行文件可以执行所有相同的功能,对吗?

这种常见的安装包装解决方案是否告诉Windows,“嘿,我是安装人员。正在安装一些东西。”? Windows没有分析可执行文件的实际行为,对吗?

3 个答案:

答案 0 :(得分:2)

如果您的问题是关于要求管理员凭据,那么当可执行文件的清单表明它需要管理员权限时,这是正常的行为。我想如果你说你的InnoSetup需要管理员权限,它将包括一个需要提升的清单,Windows将显示提升提示。

如果您认为InstallShield是Microsoft Windows产品,则不会出现Windows InstallShield。 InstallShield是第三方产品,在许多情况下会创建MSI文件。 MSI文件被标记(建成时)是否需要提升。它是摘要信息strean Word Count,表示MSI是否需要提升才能安装:

https://msdn.microsoft.com/en-us/library/aa372870(v=vs.85).aspx

答案 1 :(得分:1)

对于.MSI,确定,Windows会自动知道您的安装内容。我认为你的问题更像是除了.MSI以外的任何东西。 Windows内置了一些启发式功能,AFAIK由应用程序兼容性团队管理。他们做的事情是检测它们是什么设置(如文件名,进程名称,摘要信息流检查等)并执行各种功能,例如检测可能的安装失败,询问它是否是安装以及是否失败并且它们执行应用程序兼容性填充程序,例如版本说明和强制UAC提升提示。

你可以避免这个丑陋的世界,我的作者正确设计了MSI。 :)

答案 2 :(得分:0)

MSI可以按用户或按机器创作。默认情况下,每用户安装不会要求提升。每次机器安装一旦达到InstallExecuteSequence就会要求提升。