windows7封装的驱动处理

上传人:豆浆 文档编号:875002 上传时间:2017-05-20 格式:DOC 页数:12 大小:401.50KB
返回 下载 相关 举报
windows7封装的驱动处理_第1页
第1页 / 共12页
windows7封装的驱动处理_第2页
第2页 / 共12页
windows7封装的驱动处理_第3页
第3页 / 共12页
windows7封装的驱动处理_第4页
第4页 / 共12页
windows7封装的驱动处理_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《windows7封装的驱动处理》由会员分享,可在线阅读,更多相关《windows7封装的驱动处理(12页珍藏版)》请在金锄头文库上搜索。

1、步步为营封 Win7驱动处理步步为营, 驱动二、驱动处理 M7 w+ 0 ) w2 k8 Z# c& S(一)简介) D6 B1 I7 u, A- A! F6 d c2 D2 s封装前都会对封装用计算机(源计算机)中的硬件设备驱动进行处理。所谓处理,主要是卸载驱动,以及一些对驱动程序的调整等。5 q5 R! W7 3 a0 B: * V为什么要卸载源计算机的硬件设备驱动程序?理论上说,卸载源计算机的驱动不是必要的步骤,Windows 本身就具有对硬件的即插即用能力,例如你添加一块网卡、更换一块显卡系统都会自动帮你搜寻适合的驱动并尝试安装。系统封装与部署技术是将源计算机中的系统封装后部署到其他计

2、算机上,对系统来说并不认为是系统部署到了不同计算机中,而是发现了更多的即插即用设备,系统会为这些“多出来”的设备自动搜索与安装驱动。) P1 Q) 8 n: K* & J8 O) Q i/ m: j但是事与愿违,只有实践才能检验理论。在实际的系统封装与部署中,由于硬件不卸载带来的一系列的小问题层出不穷。这些问题中有些的确是由于硬件商造成的,例如 XP 时代经典的声卡 ID 冲突问题;而也有一些也是由于 Windows 本身的功能造成的,例如出现 “本地连接 2”等。再加之每个用户都不想要一个“不干净”的系统,所以驱动处理逐渐的成为了必须要做的事情。, P4 e. g9 n( w. S3 n(二

3、)原理: N. O$ k9 G6 0 m! X. s; p0 n% k) K处理驱动程序不是什么难事,估计没有人不会卸载驱动与更改驱动。所以,在本文里我绝对不会和大家探讨怎么一步步的在设备管理器里点鼠标卸载驱动,这无异于浪费大家的时间和精力。我们要讨论的是怎么自动的卸载这些驱动程序,毕竟大家都喜欢双击一个程序解决一切问题的舒适感。今天我们要做的,就是要了解这种舒适感背后的技术。每种硬件都有它们自己的 ID,要查看硬件的 ID 很容易,如下图:, B% t n0 e t 1 g7 K$ / q$ J. p; w3 H3 y: c从图中可以看到,硬件不只有一个 ID,一般来说一个硬件的硬件 ID(

4、HWID)会有 14个。HWID 就像身份证号一样独立标识着每类硬件,所以我们很容易的可以想到会存在一组硬件与 HWID 的对应关系列表。如何获得这个列表?打开注册表: 2 k, p- F1 o3 u! j4 l6 _0 I L# B9 U3 y, A: F! hHKEY_LOCAL_MACHINESYSTEMControlSet001Enum) n0 e8 i, + ; X- U0 f w7 ) x y# R! _可以看到其下的分类,打开某一个分类,例如 Display,再选取下面的硬件子类,例如我计算机中的:HKEY_LOCAL_MACHINESYSTEMControlSet001Enum

5、DISPLAYBNQ76D9打开后会发现其下有以设备编号命名的设备键,例如我计算机中的:. p9 G3 ! J2 g9 d) * lHKEY_LOCAL_MACHINESYSTEMControlSet001EnumDISPLAYBNQ76D95&5db3def&0&UID2684354598 4 t1 U) L; G- _0 Z. E* B3 ) Z7 g a这其实是我的 BENQ 显示器,显示器的标识是“5&5db3def&0&UID268435459”,我们来看一下“5&5db3def&0&UID268435459”下的子键,找到“HardwareID”键,它的键值即是我的 BENQ 显示

6、器的 HWID。) p0 W- ) a( i当然您的显示器不可能完全与我的一样,但您可以在类似的位置找到您显示器的HWID。如果您已经找到了,那么可以以此类推看看其他硬件的 HWID。您会发现HardwareID 键包括多个 HWID 键值,就像我们在设备管理器里看到的一样。这也就是说,我们可以通过注册表来获取本机所有硬件设备的 HWID 列表了!8 a; / N# G$ U5 t5 l j, j1 X! a- J说到这里您大概会有如下两个问题了:% D& i8 R# h, P3 o5 f5 V1 |4 _/ E1、我们有了 HWID 又能做什么?有 HWID 就能自动卸载驱动吗?2、怎么获取

7、这个列表,难道要我们手工一个个的复制粘贴吗? 9 o/ z$ N9 # U% u下面我们来逐步解决这些问题,我们要用到命令行工具的操作基础和一定的 AU3 基础,如果您这两方面比较薄弱,那么建议先多学习一下这方面的知识再来学习如下内容(三)DevCon.exe5 p: Q n: o# Y/ x* C) X7 YDevCon.exe 是微软的可代替设备管理器的命令行工具。虽然是个命令行工具,但实际上讲,它有着比设备管理器更强大的性能。如果对此工具有更多兴趣,可以查阅微软官方支持:http:/ h* Q) n, t0 R a7 lDevCon.exe 的说明(读取自微软):2 c0 _9 . I6

8、 e% 2 B9 ?0 x$ C M, e5 + p5 M) T! s: g devcon.exe -r -m: .; A9 i# o+ z4 R* _( ; r C9 -r 如果指定它,在命令完成后若需要则重新启动计算机。! _, g% ! Y9 w) P: t; |4 I是目标计算机的名称。是将要执行的命令(如下所示)。; t9 q$ P& X4 r: C3 C2 I. 是命令需要的一个或多个参数。要获取关于某一特定命令的帮助,请键入:devcon.exe help classfilter,允许修改类别筛选程序。classes,列出所有设备安装类别。* W: K! c8 G* ?3 H B

9、% v pdisable,禁用与指定的硬件或实例 ID 匹配的设备。! 0 K4 r* 0 Y- N vdriverfiles,列出针对设备安装的驱动程序文件。6 D+ S2 g# g+ D: F# a4 I* rdrivernodes,列出设备的所有驱动程序节点。! * u/ K6 W M% n Senable,启用与指定的硬件或实例 ID 匹配的设备。find,查找与指定的硬件或实例 ID 匹配的设备。; # G- z7 U9 O N( I( Vfindall,查找设备,包括那些未显示的设备。help,显示此信息。% K W, g- 9 Q8 bhwids,列出设备的硬件 ID。8 C0

10、Q9 k2 F4 install,手动安装设备。5 B& P1 q# L& qlistclass,列出某一安装类别的所有设备。reboot,重新启动本地计算机。remove,删除与特定的硬件或实例 ID 匹配的设备。$ I 6 Z# B) W. K& Yrescan,扫描以发现新的硬件。resources,列出设备的硬件资源。restart,重新启动与特定的硬件或实例 ID 匹配的设备。stack,列出预期的设备驱动程序堆栈。3 e2 i9 V% F9 m) istatus,列出设备的运行状态。update,手动更新设备。UpdateNI,手动更新设备,无用户提示 * _5 * m0 F$ +

11、 i! ! Y! wSetHwID,添加、删除和更改根枚举设备的硬件 ID 的顺序。& i, g k2 . Z8 j; Y& K+ ) Y) j这的确是一个功能很多的工具,但今天我们只需要它的一个功能就可以了,毕竟我们只需要用 DevCon.exe 来卸载驱动。我们来看 DevCon.exe 的“remove”功能,此功能的语法是:0 L; M7 3 * Z0 | + ZDevCon.exe remove HWID0 E7 o: m R3 L6 yDevCon.exe 的这个功能的主要目的,是移除使用本 HWID 的硬件驱动程序。即,我们只要知道设备的 HWID,就可以通过 DevCon.ex

12、e 的命令行模式将其卸载。例如我们要卸载一个 HWID 为“PCIVEN_1002&DEV_4393&CC_0104”设备的驱动,则: ! A! T! K# p% T5 sDevCon.exe remove PCIVEN_1002&DEV_4393&CC_0104# I/ W9 q! 这为我们自动卸载驱动做了最好的铺垫。(四)自动卸载1、自动获取 HWID 列表: y: F K1 % W4 n! e3 i4 m 0 n. C6 q& i既然我们只要有硬件的 HWID 就能卸载该硬件的驱动,那么我们现在就要想办法怎么弄到计算机中所有硬件的 HWID 列表了。前文已述,可以通过读取注册表的方法获取

13、 HWID,那么我们就可以通过 AU3 实现。2 M5 i) x8 ! E: aFunc _DrvUnins_ReadHwids()Local $HwidList12, $p = 1$ X/ V0 B% I+ Local $RootKey = HKEY_LOCAL_MACHINESYSTEMControlSet001Enum$ & n* g, O c1 TLocal $i = 1/ C1 o0 j+ _+ gWhile 1& m1 p. X) 6 C+ j8 f8 rLocal $SubKey1 = RegEnumKey($RootKey, $i)If error = -1 Then Exit

14、Loop2 p( 0 t; S K1 S$SubKey1 = $RootKey & & $SubKey1& e6 n. I( G) o4 F& M( H& H. T4 XLocal $j = 19 b N/ $ m V) j# 3 q* z3 A- nWhile 1Local $SubKey2 = RegEnumKey($SubKey1, $j)If error = -1 Then ExitLoop! E& _4 W5 y; w3 f0 0 S) j2 z$SubKey2 = $SubKey1 & & $SubKey2Local $k = 1; S, c6 K& n V4 M( VWhile

15、1* K, T1 P% R* b9 e- i2 lLocal $SubKey3 = RegEnumKey($SubKey2, $k) K( V 8 B, yIf error = -1 Then ExitLoop& _: _6 F: e! Q N6 $SubKey3 = $SubKey2 & & $SubKey3 Local $Cls = RegRead($SubKey3, Class); x0 f- k+ h; c) |* If $Cls Keyboard And _$Cls LegacyDriver And _; S K m$ ; ?5 x: e) P4 1 M |$Cls ThenReDim $HwidList$p + 12$HwidList$p0 = $SubKey3$HwidList$p1 = RegRead($SubKey3, HardwareID)$p += 10 a, H; T N# |# h( 6 EndIf$k += 1WEnd$j += 15 p, a% b8 c5 h) Z) xWEnd* B7 j4 g, w H+ . N$i +=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号