陈德馨

万能包清理幽灵设备专用工具RemoveGhostDev

830人参与 |分类: 工具库|时间:2014年08月03日 09:43

以前做过Ghost封装的同学肯定知道,从一台电脑做完封装,Ghost到另外一台电脑后,设备管理器里面会看到很多在封装系统那台电脑上的设备信息,这些设备虽然不会造成什么严重问题,但是系统每次启动都会尝试加载该设备,而且让人看着很不爽。作为一个技术洁癖者,更容不下这种情况在系统中发生。

怎么查看幽灵设备?

set devmgr_show_nonpresent_devices=1
start devmgmt.msc

将以上文本保存为批处理,运行后会自动打开设备管理器,在设备管理器中点击查看-显示隐藏的设备,这时你就可以看到很多图标呈浅灰色状态的设备了,这些设备因为以前连接过,在系统的注册表中留下了信息,但现在已经并没有连接在电脑上了。如下图:

nonpresent01.png

如何去掉这些设备?

去掉这些设备有很多种方法。

1、通过设备管理器手动一项一项的删除,很明显这并不是明智的选择。

2、记录一下这些设备的ID,通过微软提供的DevCon工具来卸载,当然这种方法可以复用,而如果你更换了做母盘的硬件设备呢?是不是要重新再记录一次隐藏的设备列表?另外系统中有多个设备的硬件ID是一样的,通过DevCon来卸载可能会把系统中正在工作的设备给卸载掉。就像13Q4系统中曾经出现过的问题,清理幽灵设备的批处理因为将正在使用的磁盘卷删除了导致开机就死机。

3、通过注册表删除,网上有方法,但会有兼容性问题。

以上方法都无法做到一劳永逸,而且一旦清理错误将回导致无法返回的损失,是无盘还好,如果是有盘,系统可能就崩溃无法启动了。

专为清理幽灵设备而生的工具

以前也发一个龙帝国制作的清理幽灵设备工具,并不完整,通过DevCon来卸载幽灵设备的缺点上面也提到过了。在经过1天多的研究,询问了一位资深的驱动研发,了解到Windows系统中的setupapi.dll提供了一系列api来让我们管理硬件设备列表。也参考了DevCon源代码和微软的相关介绍制作了此工具。工具代码基于微软一篇文章中的代码修改而成,工具通过枚举系统所有设备信息并判断是否是未连接设备,如是未连接设备则移除该设备。学过C/C++的同学多研究一会就懂了。具体效果如下两副图片。

没有清理幽灵设备的效果图:

nonpresent02.jpg

可以看到,有很多隐藏的幽灵设备,而这些设备不知道已经残留了多久了。下图是使用工具清理后的效果图:

nonpresent03.jpg

工具使用方法

使用批处理或双击直接运行即可,另外有必要说明的是,程序分32位和64位版本,如果在64位系统下运行32位的程序,会提示“移除设备失败: 错误代码 -536870347 .”如下图:

nonpresent04.png

360网盘:https://yunpan.cn/cP49XHGrMMcrc   | 提取码:1f08

来源:陈德馨博客(微信/QQ号:35435164),转载请保留出处和链接!

地址:

必填

选填

选填

◎已有 0 人评论,请发表您的观点。