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