今天清理d盘内容时误删了qq的一个配置文件,无奈之下只能卸了重装。但是卸载完以后,却无法在原来的文件夹下重新安装(报错:当前目录下已安装了QQ正式版,无法再安装QQ体验版)。后来再网上查了一下,有人说可能是因为注册表里的配置信息没删干净。也由此产生了一些疑问
1. 注册表相关疑问
这些问题我都是问的ai,下述答案也只是我对ai回复的简单总结,可能会有说的不对的地方。
- 为什么这种软件自带的卸载程序也无法彻底删除注册表里的内容?按理说安装软件时保存一下注册表的写入路径,卸载软件时根据这些路径把该软件的相关配置信息删了不就行了?
答:一方面这样做会加大开发难度;另一方面,操作注册表相关的内容一般都需要较高的权限,如果直接给予安装的软件管理员权限,就会出现安全隐患(例如:非法软件可能会利用这些权限盗取个人信息)。- 不提前给予管理权限,等删除注册表信息时再临时赋予它们管理权限不就好了(设置一个弹窗问用户是否可以临时给予软件管理员权限)?还是担心的话,可不可以配合windows系统研发一个检测系统(一旦用户点击确定临时赋予管理员权限,就会触发windows的检测机制,只有检测到是正版软件才会真正赋予它管理员权限)?
答:软件用久了以后,配置信息会越来越多。随着下载软件数量的增多,也可能存在两个软件所需依赖相同的情况。如果a软件直接把公共依赖删除导致b软件也不能正常运行,就可能会出现一些不必要的纠纷。- a软件利用管理员权限尽可能多得删除注册表里的配置信息,不确定能不能删的就把当时注册表里的存储路径写到一个记事本里,让用户自己斟酌,这样不是也可以吗?
答:不同的系统注册表写入路径也可能不同,上述构想不太容易实现。- 既然linux可以借助apt、yum等包管理工具尽可能更彻底地移除软件及其相关组件,为什么windows不可以开发一个类似linux包管理工具的组件将它集成到控制面板的软件卸载模块,从而更方便也更彻底的卸载软件?
答:① 兼容性:许多windows应用程序是通过各种不同的安装程序进行安装的,这些安装程序可能会在系统中创建或修改许多不同的注册表和文件。因此,提供一个统一的包管理工具可能会对兼容性和不同安装程序的行为产生挑战。② 用户体验:Windows的用户界面设计倾向于简化用户操作,因此控制面板中的卸载功能旨在提供一个简单易用的方式来移除程序,而不必深入管理所有相关的依赖和配置。这种设计可以降低普通用户的操作复杂性,但可能导致残留问题。③ 应用程序多样性:在Windows上,有许多应用程序的安装和卸载方式不统一。开发者可能不会遵循统一的标准或最佳实践,这使得创建一个能处理所有这些情况的通用工具变得困难。④ 进程和系统管理:Windows的系统和软件管理机制通常是基于分散的方式进行的,每个应用程序可能会有自己的安装和卸载逻辑,这种设计减少了需要集中管理的软件和系统组件的数量。相比之下,Linux的包管理系统提供了更集中和一致的方式来处理软件安装和卸载,支持依赖管理和配置清理。
2. 如何彻底删除卸载软件时残余的.dll文件
把该文件后缀名改成 .txt,然后重启电脑。重启之后不要打开那个文件夹,直接删除。
这是我在知乎上看到的一个帖子上写的解决方案,亲测有效