Windows 将卸载程序的文件映射存储在哪里?

Windows 将卸载程序的文件映射存储在哪里?

当您卸载程序时,Windows 会查找所有程序文件并将其删除,那么它将包含这些文件的所有路径的文件存储在哪里?(特别是 Windows 7)。抱歉,如果这是重复的,很难用语言表达这个问题 :)

编辑#1:我看见,但我想知道所有程序,而不仅仅是.msi

答案1

卸载信息的位置可能因程序而异。对于某些程序,例如您在“卸载或更改程序”下看到的程序,如果您尝试通过控制面板, 你可以找到卸载软件的程序在下面Windows 注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall。一些可能位于注册表中的其中一个位置,而其他可能位于另一个注册表位置下。

您可以运行注册表编辑器程序 regedit 并浏览到注册表中的这些位置。如果您查看特定程序的键,您可能会看到一个名称UninstallString指向当您选择通过控制面板卸载程序时将运行的程序的位置。该卸载程序通常位于程序文件所在的目录中。对于某些程序,您可能会InstallLocation在名称与相关程序名称匹配的条目下看到一个键,该键指向程序文件所在的目录。

答案2

是否提供卸载程序完全取决于每个应用程序的供应商。没有一个通用的标准位置来存储需要删除的文件/注册表设置列表。这就是为什么这么多程序在硬盘上留下大量垃圾的原因。大多数程序根本不能很好地清理自己。

大多数软件供应商将其软件打包在第三方安装程序中,其中最常见的是 InstallShield (Flexera Software) 或 Microsoft Windows Installer ( .msi)。这些安装程序产品允许软件供应商定义包含有效负载中的所有文件和注册设置及其去向的表格。它们还提供了一种脚本语言,供应商可以使用该语言在安装过程中做出决策。

这些产品使供应商可以轻松部署应用程序,而无需编写自己的安装程序,但关键是每个供应商是否真正使用这些功能仍然取决于他们自己。当您构建项目时,Microsoft 和 InstallShield 都会自动为您生成一个基本的卸载程序,但它只会删除表中列出的文件和注册表设置 - 前提是它们没有更改。它们不会删除之后添加的任何内容或用户目录中的任何设置,并且默认情况下不会对卸载应用任何智能。如果有任何含糊不清的地方,它就会被保留下来。

正是由于这个原因,卸载程序才如此草率,而当供应商懒得考虑这些事情时(或者更糟糕的是,在垃圾软件的情况下,不希望你卸载他们的应用程序),几乎不可能干净地删除应用程序。

相关内容