扩展有关如何从注册表中删除已卸载软件的残留痕迹的信息?-每次我卸载程序,然后再通过RegEdit查找它时,它仍然存在!
为什么大多数Windows应用程序都如此打算在注册表中留下一些小小的痕迹?是Windows的错还是开发人员的错?
因为这是不可能的。
注册表有多个根节点,但只有两个有趣的根节点:LocalMachine和CurrentUser。通常,安装程序会将值写入LocalMachine中,而运行的程序仅写入CurrentUser中(实际上,除非安装程序将权限弄乱,否则运行程序将无法写入LocalMachine中。)
正如其他答案所指出的那样,尽管将剩余的内容保留在LocalMachine中是懒惰的,但无法清除用户部分。
如果每台计算机安装了一个程序(最多),并且有多个用户使用该程序,那么卸载程序应该怎么做?它可以安全地删除当前帐户的用户设置,但是当前帐户可能不是您的帐户。(如果从非管理员帐户启动卸载程序,然后输入管理员帐户的凭据,则会发生这种情况-安装程序现在在该帐户下运行,而不是第一个)。
那其他用户呢?它可以尝试枚举所有用户,但可能不会加载其注册表项。(Windows是惰性的,仅加载它需要的东西。)
但是,您甚至都不应该尝试那个。如果您使用漫游配置文件(例如用于终端服务),然后在卸载时删除所有设置,则可能会搞砸并删除实际上仍在使用的内容。
终端服务器基本上是一台Windows计算机,其中多个用户同时登录并使用应用程序。
假设您有两个运行一个应用程序的终端服务器。您在TS1上卸载了该应用程序,现在所有用户的所有设置都在TS2上消失了,因为您具有漫游配置文件。哎呀。
每个用户目录中的文件也是如此。
在我的公司程序的安装程序中,我删除了每台计算机的内容,但不触摸每用户的内容,甚至不涉及当前正在运行安装程序的用户。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句