Windows 如何知道我正在安装某些东西?
How does Windows know I'm installing something?
禁止用户在没有提升权限的情况下安装程序是一种常见的做法,尤其是在大公司中。当用户运行安装可执行文件时(无论是 .exe
还是 .msi
),在用户访问控制允许安装之前,系统会提示用户输入这些管理员凭据。许多需要安装的程序利用默认的 Windows 安装程序 .msi
打包或类似的东西,但是可执行文件可以执行所有相同的功能,对吧?
是不是这个普通的安装打包方案告诉了Windows,"Hey, I'm an installer. Something is being installed."? Windows 不是在分析可执行文件的实际行为,对吗?
MSI 可以按用户或按机器编写。默认情况下,每用户安装不会要求提升。每台机器安装将在点击 InstallExecuteSequence 后请求提升。
如果您的问题是关于询问管理员凭据,那么当可执行文件的清单表明它需要管理员权限时,这是正常行为。我想如果你说你的 InnoSetup 需要管理员权限,它将包含一个需要提升的清单,并且 Windows 将显示提升提示。
没有 Windows InstallShield 这样的东西,以防您认为 InstallShield 是 Microsoft Windows 产品。 InstallShield 是第 3 方产品,在许多情况下会创建 MSI 文件。 MSI 文件被标记(在构建时)是否需要提升。摘要信息流字数表示 MSI 是否需要提升才能安装:
https://msdn.microsoft.com/en-us/library/aa372870(v=vs.85).aspx
对于 .MSI,当然,Windows 会自动知道您安装的东西。我认为您的问题更多的是关于除 .MSI 以外的任何东西? Windows 内置了一些启发式算法,AFAIK 由应用程序兼容性团队管理。他们做一些事情来检测他们是什么设置(如文件名、进程名称、摘要信息流的检查等)并执行各种功能,例如检测可能失败的安装、询问它是否是安装以及是否失败并且他们执行应用程序兼容性垫片,例如版本说谎和强制 UAC 提升提示。
你可以避免这个丑陋的世界我的创作设计得当的 MSI。 :)
禁止用户在没有提升权限的情况下安装程序是一种常见的做法,尤其是在大公司中。当用户运行安装可执行文件时(无论是 .exe
还是 .msi
),在用户访问控制允许安装之前,系统会提示用户输入这些管理员凭据。许多需要安装的程序利用默认的 Windows 安装程序 .msi
打包或类似的东西,但是可执行文件可以执行所有相同的功能,对吧?
是不是这个普通的安装打包方案告诉了Windows,"Hey, I'm an installer. Something is being installed."? Windows 不是在分析可执行文件的实际行为,对吗?
MSI 可以按用户或按机器编写。默认情况下,每用户安装不会要求提升。每台机器安装将在点击 InstallExecuteSequence 后请求提升。
如果您的问题是关于询问管理员凭据,那么当可执行文件的清单表明它需要管理员权限时,这是正常行为。我想如果你说你的 InnoSetup 需要管理员权限,它将包含一个需要提升的清单,并且 Windows 将显示提升提示。
没有 Windows InstallShield 这样的东西,以防您认为 InstallShield 是 Microsoft Windows 产品。 InstallShield 是第 3 方产品,在许多情况下会创建 MSI 文件。 MSI 文件被标记(在构建时)是否需要提升。摘要信息流字数表示 MSI 是否需要提升才能安装:
https://msdn.microsoft.com/en-us/library/aa372870(v=vs.85).aspx
对于 .MSI,当然,Windows 会自动知道您安装的东西。我认为您的问题更多的是关于除 .MSI 以外的任何东西? Windows 内置了一些启发式算法,AFAIK 由应用程序兼容性团队管理。他们做一些事情来检测他们是什么设置(如文件名、进程名称、摘要信息流的检查等)并执行各种功能,例如检测可能失败的安装、询问它是否是安装以及是否失败并且他们执行应用程序兼容性垫片,例如版本说谎和强制 UAC 提升提示。
你可以避免这个丑陋的世界我的创作设计得当的 MSI。 :)