Windows 11 上暴力删除软件(TabX Explorer)的后果
在 Windows 11 上安装一个工具程序时不小心装了一个捆绑软件(TabX Explorer),暴力删除它所在的文件夹后造成了严重的后果,最终通过取巧解决问题。
这两天因为一些研究的需要在网上下载了一个游戏工具程序。这类工具程序原则上并不是那么地合法(属于那些有心人用爱发电去做的那种程序),所以也就没有什么官网可言。因为急着要使用,所以在网上搜到了就直接下载了,渠道类似下面这样:
我知道这里面会有一些坑,按照以往的经验,普通下载的渠道通常可以干净一些,有时可以直接下到自己需要的东西。抱着试试的心态下完,双击程序时有些失望:
该应用需要鲁大师支持下载!
好吧,大不了我装完鲁大师下完软件后再卸载掉鲁大师。安装鲁大师的时候,有一堆的捆绑软件,但看着不是强制安装的,可以取消勾选。印象中当时就看到有 TabX Explorer,可能是在那个时候点漏了~。游戏工具程序装完后,可以正常使用,但有什么隐患暂时不知道,如果真有也算是自作自受了,先这样用着。接着就把鲁大师给卸载了。
TabX Explorer 大致可以看成是一款替代文件资源管理器(在 Windows 上按 Win + E 弹出)的产品。一开始我都没有留意到它的存在,因为它跟 Win11 默认的文件资源管理器长得很像(我已经不想再去主动重现这个问题了,因此没提供图片),如果不是在误装它之前我已经有几个打开了的文件资源管理器可以做对比,我根本不会留意到它跟原版的区别。
它对我平时的操作使用并没有什么影响,我可以不去管它。但想想一方面不知道它背后会不会有什么小动作,另一方面自己又有些强迫症,就打算把它删掉。本来我可以通过正常渠道卸载它(即从系统的应用管理里面卸载,基本上系统都是通过调用软件自身的卸载程序来完成卸载)。但当时它的安装目录就在我面前(我当时正好打开着那个游戏工具程序的目录,而 TabX Explorer 就在同级目录),我顺手就选中它按了下 Delete 键,系统还善意地提醒我需要先把它的进程先关掉。我关掉 TabX Explorer 的进程后就把整个文件夹删掉了(的确是一个非常愚蠢的操作)~。
删掉 TabX Explorer 后我没有刻意地去测试默认的文件资源管理器,当时也没想过它会出问题。我很少使用 Win + E,因为我的习惯是把需要的目录点开后就一直留着。直到一段时间后需要找一个东西时按了一下 Win + E,结果傻眼了:
我意识到了这是 TabX Explorer 给我留下的意外惊喜。网上搜了一下,问题基本就是文件资源管理器相关的注册表选项被改了。我根据相应文章的提示打开 HKEY_CLASSES_ROOT\CLSID{52205fd8-5dfb-447d-801a-d0b52f2e83e1}\shell\opennewwindow 一看,果然是(下图是恢复之后的注册表,没去重现问题,只能大概回忆被改成什么样):
所以原因应该就是误装 TabX Explorer 时它改了注册表,然后我没有走正常卸载通道,而是直接强制删除安装目录导致注册表没有被改回来,进一步导致 Win + E 无法正常工作。接着就没有继续看网上的资料,直接就实操尝试了一下,先看下系统的 explorer.exe 路径:
把前面的默认字段改成了 C:\Windows\SysWOW64\explorer.exe 后,Win + E 可以打开系统的文件资源管理器了,但是随便点开里面的一个文件夹或者磁盘,又弹出了 ”找不到应用程序“ 提示框~。
没办法,注册表这东西我也不太敢随便动,只能接着看网上的资料。对于这类问题,网上的很多回答又是改权限,又是删注册表字段,而且整个操作流程也不是特别的友好,不是很想走这一步。然后我突然想到,TabX Explorer 的整个文件夹虽然被我删掉了,但它应该还躺在回收站里面!如果我把它还原,然后从系统应用管理里面把它卸载,应该能解决问题(通常应用安装的根目录下会有个 uninstall.exe 之类的卸载程序,双击它或者在系统应用管理里面卸载目标应用,都会运行这个卸载程序。而如果应用在安装的时候有修改注册表,那它在卸载自己的时候应该会把注册表改回来)。
当我双击回收站的时候,又弹出了 ”找不到应用程序“ 提示框(:。网上搜了一下发现,打开回收站的方式五花八门:在 Windows 11 PC 上打开回收站的 7 种方法。一个个地去试,直到方法 4 才成功(还好经过前面的尝试已经可以通过 Win + E 打开文件资源管理器):
从回收站中把 TabX Explorer 还原后,点开系统应用管理,找到它点击卸载,提示会运行应用目录的 uninstall.exe,点击确认等一会后,显示卸载完成,系统的文件资源管理器也能正常使用,注册表变成了前面图三的样子(其实我之前有尝试手动改成这个样子,但并没有解决问题,说明 TabX Explorer 可能还改了别的什么地方)。
这样应该就把这个问题解决掉了。当然这并不是唯一的方法,这是要根据实际情况去分析的,本文使用的方法有一些前提条件:
- 我知道这个问题产生的原因
- 补救及时(清空回收站之前)
然后也接触了一些注册表 CLSID 相关的知识:系统 CLSID 简介和小技巧,里面有一些有趣的内容。
权衡了一下自己的时间安排,没有再深究下去。最后问了下 ChatGPT 相关字段的知识:
提问:
请解释下 HKEY_CLASSES_ROOT\CLSID{52205fd8-5dfb-447d-801a-d0b52f2e83e1}\shell\opennewwindow 里的默认字段和 DelegateExecute 字段。
回答:
字符串 HKEY_CLASSES_ROOT\CLSID{52205fd8-5dfb-447d-801a-d0b52f2e83e1}\shell\opennewwindow 是 Windows 注册表中的一个路径,用于定义特定的文件类型或对象的操作行为。在这个路径下,有两个字段需要解释:默认字段和 DelegateExecute 字段。
-
默认字段(Default Value):在注册表中,每个键都可以有一个默认字段,它存储键的默认值。在这个特定的路径中,默认字段的值是一个字符串,用于定义与操作相关联的默认动作。在这种情况下,该默认字段的值可能是一个命令或操作的名称,用于指定在双击相关文件或对象时要执行的默认操作。例如,它可能是一个应用程序的名称或一个命令行命令,用于打开一个新窗口来处理该文件或对象。
-
字符串 DelegateExecute 字段: DelegateExecute 是一个注册表值,用于指定是否要使用 COM 对象来执行操作。COM(Component Object Model)是一种用于在 Windows 上创建可重用软件组件的技术。 DelegateExecute 字段的值是一个字符串,用于指定要执行操作的 COM 对象的 CLSID(Class Identifier)。CLSID 是一个唯一的标识符,用于标识注册在系统中的 COM 对象。通过指定 DelegateExecute 字段的值,可以委托给特定的 COM 对象来执行操作。
综上所述,HKEY_CLASSES_ROOT\CLSID{52205fd8-5dfb-447d-801a-d0b52f2e83e1}\shell\opennewwindow 路径中的默认字段和 DelegateExecute 字段一起定义了与特定文件类型或对象关联的默认操作及其执行方式。默认字段指定默认操作的名称或命令,而 DelegateExecute 字段指定要执行操作的 COM 对象的 CLSID。