为什么正常卸载不会从注册表中删除值?


20

扩展关于如何从注册表中删除已卸载软件的残留痕迹?-每次我卸载程序,然后再通过RegEdit查找它时,它仍然存在!

为什么大多数Windows应用程序如此打算在注册表中留下自己的微小痕迹?是Windows的错还是开发人员的错?


3
这些程序中有很大一部分属于有时间限制的试用程序,之后您必须购买它们。如果他们在Windows上没有留下任何痕迹,则在试用期结束后,您只需卸载并重新安装该软件并重置试用期即可。真正由开发人员决定他们的程序在卸载时应如何操作。有些程序和驱动程序软件会完全卸载并删除安装时添加的所有内容。
Conspiria

Answers:


30

因为这是不可能的。

注册表有多个根节点,但是只有两个有趣的根节点LocalMachineCurrentUser。通常,安装程序将值写入LocalMachine,运行的程序仅写入CurrentUser(实际上,除非安装程序将权限弄乱,否则运行程序无法写入LocalMachine。)

正如其他答案所指出的那样,尽管将剩余的内容保留在LocalMachine中是懒惰的,但无法清除用户部分。

如果每台计算机都安装了一个程序(最多),并且有多个用户使用该程序,那么卸载程序应该怎么做?它可以安全地删除当前帐户的用户设置,但是当前帐户可能不是您的帐户。(如果您从非管理员帐户启动卸载程序,然后输入了管理员帐户的凭据,则会发生这种情况-安装程序现在在该帐户下运行,而不是第一个)。

那其他用户呢?它可能会尝试枚举所有用户,但可能不会加载其注册表项。(Windows是惰性的,仅加载它需要的东西。)

但是,您甚至都不应该尝试那个。如果您使用漫游配置文件(例如用于终端服务),然后在卸载时删除所有设置,则可能会弄乱并删除实际上仍在使用的内容。

终端服务器基本上是一台Windows计算机,其中多个用户同时登录并使用应用程序。

假设您有两个运行一个应用程序的终端服务器。您在TS1上卸载了该应用程序,现在所有用户的所有设置都在TS2上消失了,因为您具有漫游配置文件。哎呀

每个用户目录中的文件也是如此。

在我的公司程序的安装程序中,我删除了每台计算机的内容,但不触摸每用户的内容,甚至不删除当前正在运行安装程序的用户。


另外,不要忘记卸载并不一定意味着完全摆脱应用程序:有时您卸载应用程序的版本1,然后安装同一应用程序的版本2-在这种情况下,您不想丢失所有设置。
斯特凡2015年

19

出现这种情况的原因有很多,但这不是Microsoft或Windows操作系统的问题。

以下是留下注册表项的一些情况和原因的列表:

  • 错误的编程 -开发人员未正确编写应用程序卸载程序,并且注册表项被留下。除此之外,卸载程序可能没有/使用适当的权限来删除注册表项。也可能有多个应用程序使用这些键。例如,来自同一开发人员的两个应用程序将写入相同的密钥。

  • 故意留下 -如一条评论所述,这些条目可能是故意留下的。某些应用程序有试用期,在此期限之后,您可以选择删除该应用程序。如果选择稍后重新安装该应用程序,则这些键会提供有关应用程序安装时间的信息。除此之外,某些开发人员可能会选择保留这些密钥,以防您选择重新安装该应用程序。如果开发人员使用注册表项来存储您的自定义项,则它们可能会将其保留在此处,因此,当您重新安装时,所有自定义项都会保留。在大方案中,注册表项仅占用几个字节。

您应该卸下钥匙吗?那要看。Windows注册表是一个很危险的地方。您可能会无意间破坏系统。留下多余的密钥不会损害系统。有人会说清理/整理注册表碎片将加快您的系统速度,但是反复证明这是错误的

如果您真的想摆脱那些程序,可以使用一些卸载程序工具来删除程序的所有痕迹。这些程序将监视另一个程序的安装程序,并记录对文件系统和注册表执行的所有操作,然后完全删除这些操作。这些工具的一个问题是,它们可能会删除您可能想要保留的东西。


尽管是“几个字节”,但这些字节仍相加。随着越来越多的未使用条目的建立,它可能导致注册表变慢。可能与“典型”用户无关,但繁重的用户将遇到更大的问题。这就是为什么通常建议每6到12个月刷新/重新安装Windows以保持系统“健康”的原因。诸如CCleaner之类的程序可以通过清理应用程序遗留的碎片来使系统运行时间更长。
phyrfox 2015年

3
如我的回答所述,@ phyrfox是注册表清洁剂,是蛇油。他们根本没有帮助。
凯塔里(Keltari)

1
在Win9x的日子里,注册表的大小确实很重要,而且许多陈旧的密钥也降低了操作系统的速度。但是那是很久以前的事了,新台币的食欲与众不同。虽然,有时需要修复:如何压缩“
膨胀的

10
@phyrfox:“像CCleaner这样的程序可以使系统运行时间更长”-不,他们没有。“这就是为什么通常建议每6-12个月刷新/重新安装Windows以保持系统“健康”。”-典型原因是人们不知道如何保养系统。我坐在这里输入5年的安装历史,该安装已被大量使用,并且没有明显的运行速度下降。像这样的建议使公司在生意上兜售蛇油。
卡兰2015年

1
是的,注册表实际上是非常快的(并且常用的配置单元和密钥通常保存在内存中)。即使在过去,“膨胀的”注册表的最大问题还是外壳扩展和HKCR之类的东西-一旦您重新安装提供它们的软件,它们就会立即出现。自从上次出于“性能”原因重新安装操作系统以来已经过去了很长时间(仍然在Windows XP上,从未在7上)。
a安2015年

0

要摆脱剩下的注册表,请尝试使用IOBIT卸载程序。它是迄今为止最好的卸载程序。它是免费的。我一直使用它。它具有强大的卸载功能,可直接用于左侧的注册表项是,在系统提示并删除注册表项时,单击复选框。iobit随其他程序一起提供,只需使用卸载程序来摆脱它们

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.