扩展关于如何从注册表中删除已卸载软件的残留痕迹?-每次我卸载程序,然后再通过RegEdit查找它时,它仍然存在!
为什么大多数Windows应用程序如此打算在注册表中留下自己的微小痕迹?是Windows的错还是开发人员的错?
扩展关于如何从注册表中删除已卸载软件的残留痕迹?-每次我卸载程序,然后再通过RegEdit查找它时,它仍然存在!
为什么大多数Windows应用程序如此打算在注册表中留下自己的微小痕迹?是Windows的错还是开发人员的错?
Answers:
因为这是不可能的。
注册表有多个根节点,但是只有两个有趣的根节点:LocalMachine和CurrentUser。通常,安装程序将值写入LocalMachine,运行的程序仅写入CurrentUser(实际上,除非安装程序将权限弄乱,否则运行程序无法写入LocalMachine。)
正如其他答案所指出的那样,尽管将剩余的内容保留在LocalMachine中是懒惰的,但无法清除用户部分。
如果每台计算机都安装了一个程序(最多),并且有多个用户使用该程序,那么卸载程序应该怎么做?它可以安全地删除当前帐户的用户设置,但是当前帐户可能不是您的帐户。(如果您从非管理员帐户启动卸载程序,然后输入了管理员帐户的凭据,则会发生这种情况-安装程序现在在该帐户下运行,而不是第一个)。
那其他用户呢?它可能会尝试枚举所有用户,但可能不会加载其注册表项。(Windows是惰性的,仅加载它需要的东西。)
但是,您甚至都不应该尝试那个。如果您使用漫游配置文件(例如用于终端服务),然后在卸载时删除所有设置,则可能会弄乱并删除实际上仍在使用的内容。
终端服务器基本上是一台Windows计算机,其中多个用户同时登录并使用应用程序。
假设您有两个运行一个应用程序的终端服务器。您在TS1上卸载了该应用程序,现在所有用户的所有设置都在TS2上消失了,因为您具有漫游配置文件。哎呀
每个用户目录中的文件也是如此。
在我的公司程序的安装程序中,我删除了每台计算机的内容,但不触摸每用户的内容,甚至不删除当前正在运行安装程序的用户。
出现这种情况的原因有很多,但这不是Microsoft或Windows操作系统的问题。
以下是留下注册表项的一些情况和原因的列表:
错误的编程 -开发人员未正确编写应用程序卸载程序,并且注册表项被留下。除此之外,卸载程序可能没有/使用适当的权限来删除注册表项。也可能有多个应用程序使用这些键。例如,来自同一开发人员的两个应用程序将写入相同的密钥。
故意留下 -如一条评论所述,这些条目可能是故意留下的。某些应用程序有试用期,在此期限之后,您可以选择删除该应用程序。如果选择稍后重新安装该应用程序,则这些键会提供有关应用程序安装时间的信息。除此之外,某些开发人员可能会选择保留这些密钥,以防您选择重新安装该应用程序。如果开发人员使用注册表项来存储您的自定义项,则它们可能会将其保留在此处,因此,当您重新安装时,所有自定义项都会保留。在大方案中,注册表项仅占用几个字节。
您应该卸下钥匙吗?那要看。Windows注册表是一个很危险的地方。您可能会无意间破坏系统。留下多余的密钥不会损害系统。有人会说清理/整理注册表碎片将加快您的系统速度,但是反复证明这是错误的。
如果您真的想摆脱那些程序,可以使用一些卸载程序工具来删除程序的所有痕迹。这些程序将监视另一个程序的安装程序,并记录对文件系统和注册表执行的所有操作,然后完全删除这些操作。这些工具的一个问题是,它们可能会删除您可能想要保留的东西。