8月6日消息,微软工程师Howard Kapustein近日发文分析了Windows操作系统中软件卸载的真实机制,结论是用户点击卸载后,软件往往并没有真正从系统中消失。
传统Win32应用程序的卸载流程存在一个根本问题,即Windows本身并不直接掌控卸载细节,而是调用软件开发商自己编写的卸载程序。
也就是说,能不能删干净几乎完全取决于开发商,如果开发商没有在卸载程序中写好完整的清理逻辑,软件运行期间产生的用户偏好设置、缓存文件(通常在%AppData%或%LocalAppData%目录下)以及注册表键值(HKEY_CURRENT_USER或HKEY_LOCAL_MACHINE下的条目)就会被原封不动地保留下来。
当然有些开发商是故意保留这些数据,方便用户重新安装时无缝衔接,但如果用户压根不打算再用这个软件,这些文件就成了永久的系统垃圾。
还有一种情况是多个应用共用同一套.dll文件或系统组件,卸载程序为了不影响其他软件,通常会保守地选择保留这些共享文件。
大型软件的缓存和临时文件可能高达数GB,主程序卸载了这些文件照样占着硬盘空间,Howard Kapustein指出,单个软件留下这些内容不至于让电脑立刻出问题,但日积月累就很可观了。
更隐蔽的是,部分软件安装时附带的自启动更新服务或后台监控程序,主程序卸载后如果没有被一并清除,开机时仍然会自动运行,持续占用CPU和内存。
Howard Kapustein建议用户尽量通过Microsoft Store安装软件,商店应用采用MSIX/UWP封装机制,具备沙盒隔离和独立目录设计,卸载时系统可以直接删除专属的注册表分支和隔离目录,接近100%无痕清除。
用户也可以定期检查AppData隐藏文件夹手动清理残留,或者通过任务管理器的启动页面和服务管理(services.msc)排查已卸载软件遗留的后台服务。
【本文来源:快•科技】
