Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows安装程序检测:什么';关键字的完整列表是什么?_Windows_Installation_Uac - Fatal编程技术网

Windows安装程序检测:什么';关键字的完整列表是什么?

Windows安装程序检测:什么';关键字的完整列表是什么?,windows,installation,uac,Windows,Installation,Uac,在一些现有的答案和文章(如)中提到,Windows的安装程序检测会检查程序集中的某些关键字,以检测应用程序是否为安装程序: 在创建32位进程之前,将检查以下属性以确定它是否为安装程序: 文件名包括“安装”、“安装”、“更新”等关键字 然而,我找不到这些关键词的完整列表。甚至在微软的网站上也只提到“安装”、“安装”、“更新”等。那么“cetera”是什么呢?完整的列表可能是故意未记录的,并且可能在所有版本的Windows上都不相同。它还可能包括微软不想在公开场合羞辱的ISV 正如MSDN所说,

在一些现有的答案和文章(如)中提到,Windows的安装程序检测会检查程序集中的某些关键字,以检测应用程序是否为安装程序:

在创建32位进程之前,将检查以下属性以确定它是否为安装程序:

  • 文件名包括“安装”、“安装”、“更新”等关键字

然而,我找不到这些关键词的完整列表。甚至在微软的网站上也只提到“安装”、“安装”、“更新”等。那么“cetera”是什么呢?

完整的列表可能是故意未记录的,并且可能在所有版本的Windows上都不相同。它还可能包括微软不想在公开场合羞辱的ISV

正如MSDN所说,文件名不是唯一的触发器,我知道安装程序是基于字节签名检测的

处理此问题的正确方法是确保安装程序与Vista/UAC兼容,并将requestedExecutionLevel节点添加到清单中


另一方面,如果您确实想要触发检测,那么我假设您可以只向您的版本资源或字符串表中添加一个关键字…

完整列表可能是故意未记录的,并且在所有版本的Windows上可能不相同。它还可能包括微软不想在公开场合羞辱的ISV

正如MSDN所说,文件名不是唯一的触发器,我知道安装程序是基于字节签名检测的

处理此问题的正确方法是确保安装程序与Vista/UAC兼容,并将requestedExecutionLevel节点添加到清单中


另一方面,如果您确实想要触发检测,那么我假设您可以只向版本资源或字符串表中添加一个关键字…

可能最接近“完整关键字列表”的是读取位于
%windir%\AppPatch\sysmain.sdb的shim数据库本身。(可能还有同一文件夹中的其他
.sdb
文件)

该实用程序似乎能很好地解析它。在我的Windows 7 x64系统上,可以找到sysmain.sdb
的XML输出

一个有用的起点是在文件中搜索字符串“GenericInstaller”。您将找到与文件名(“
*instal*
”、“
*setup*
”、“
trustedinstaller.exe
”)等)、校验和、文件版本信息字符串(“
InstallShield*
”、“
RTPatch可执行文件
”)和其他各种属性相匹配的
/code>配置文件。它有时甚至会识别其他文件的存在,例如“EULA.rtf”


提取用于安装程序检测的文件名模式的完整列表有点不寻常,因为安装程序似乎有许多不同的分类(“GenericInstaller”、“SpecificInstaller”、“MozillaFirefoxSetup”等)。但我相信,到目前为止,任何阅读过本文的人都可以通过在XML中挖掘找到他们需要的信息。

可能最接近“完整关键字列表”的方法是阅读位于
%windir%\AppPatch\sysmain.sdb
的shim数据库本身。(可能还有同一文件夹中的其他
.sdb
文件)

该实用程序似乎能很好地解析它。在我的Windows 7 x64系统上,可以找到sysmain.sdb
的XML输出

一个有用的起点是在文件中搜索字符串“GenericInstaller”。您将找到与文件名(“
*instal*
”、“
*setup*
”、“
trustedinstaller.exe
”)等)、校验和、文件版本信息字符串(“
InstallShield*
”、“
RTPatch可执行文件
”)和其他各种属性相匹配的
/code>配置文件。它有时甚至会识别其他文件的存在,例如“EULA.rtf”


提取用于安装程序检测的文件名模式的完整列表有点不寻常,因为安装程序似乎有许多不同的分类(“GenericInstaller”、“SpecificInstaller”、“MozillaFirefoxSetup”等)。但是我相信,到目前为止,任何读过这篇文章的人都可以通过在XML中挖掘来找到他们需要的信息。

你为什么在意?您只是好奇,还是需要避免被发现?我使用ClickOnce,希望实现上所述的解决方案,以便在卸载时执行自定义任务。。。。(例如,删除注册表项等)。解决方案建议创建一个自定义卸载程序exe,然后启动实际的ClickOnce卸载程序。问题:如果您将自定义卸载程序命名为“uninstall.exe”,Windows将显示一条消息“应用程序是否正确卸载?”(或类似消息),因为自定义uninstall.exe本身并没有真正完成卸载。刚刚被这一点咬了一下,我想知道这一点是很有道理的。我正在写一个名字中有“补丁”这个词的程序,当我编译它为32位时,我绞尽脑汁想弄明白为什么它需要提升。顺便说一句,“补丁”是名单上的另一个词。你为什么在意?您只是好奇,还是需要避免被发现?我使用ClickOnce,希望实现上所述的解决方案,以便在卸载时执行自定义任务。。。。(例如,删除注册表项等)。解决方案建议创建一个自定义卸载程序exe,然后启动实际的ClickOnce卸载程序。问题:如果您将自定义卸载程序命名为“uninstall.exe”,Windows将显示一条消息“应用程序是否正确卸载?”(或类似消息),因为自定义uninstall.exe本身并没有真正完成卸载。刚刚被这一点咬了一下,我想知道这一点是很有道理的。我正在写一个名字中有“补丁”这个词的程序,当时我正绞尽脑汁想弄明白为什么需要它