无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 16910|回复: 75
打印 上一主题 下一主题

在PE中快速的查找安装驱动程序

    [复制链接]
跳转到指定楼层
1#
发表于 2016-9-4 10:22:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sp_star 于 2016-9-4 22:32 编辑

驱动包和工具 链接: http://pan.baidu.com/s/1qXLtZtU 密码: rd3f   (驱动包很旧了,只是作为一个例子)
AUTODRV_X86.EXE是32位的程序,AUTODRV_X64.EXE是64位程序,二者功能是一样的。这个工具的目的就是尽可能快速的在驱动包里找到需要的驱动,并能够静默的安装。

如何使用
X86的驱动放置在NT6x86目录下,X64的驱动放置在NT6x64目录下,以管理员权限运行AUTODRV_X86.EXE或AUTODRV_X64.EXE,就可以自动安装匹配上的驱动。在PE里,由PECMD来调用可能更常见。

测量安装驱动所花费的时间,以及HWID的列表:
  1. DATE &t_start uptime
  2. EXEC* &inst_hwid=Z:\WIN8PE\Drivers\AUTODRV_X86.EXE
  3. DATE &t_end uptime
  4. CALC &n_second=(%t_end%-%t_start%)/1000#2
  5. MESS %inst_hwid%\n\n用时%n_second%秒
复制代码


仅安装显卡驱动:
  1. AUTODRV_X86.EXE *CC_0300
复制代码


驱动包的索引
为了快速查找驱动程序,每个驱动包(7Z格式)都有一个同名的索引TXT文件,记录了驱动包支持的Hardware ID。索引只在TXT文件里进行,让速度尽可能的快。
TXT文件格式,每行对应一个HWID,以逗号(英文字符)分隔四项。
第一项是HWID,可以从inf文件中的到支持的HWID列表。
第二项是驱动的描叙,主要是为了增加可读性,可以随便写。
第三项是inf文件名,一个驱动包可能包含多个inf文件,如果在驱动包中有路径,这里也应该加上路径。
第四项是"日期+空格+v+版本号",日期和版本号都可从inf文件获取。会自动匹配版本号最大的驱动。
***从inf文件中拷贝这些信息,用excel处理,可以容易的得到索引文件***
  1. PCI\VEN_8086&DEV_2A42,Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.1),igdlh11.inf,03/24/2012 v8.15.10.2702
  2. PCI\VEN_8086&DEV_2A43,Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.1),igdlh11.inf,03/24/2012 v8.15.10.2702
  3. PCI\VEN_8086&DEV_2E02,Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.1),igdlh11.inf,03/24/2012 v8.15.10.2702
  4. PCI\VEN_8086&DEV_2E03,Intel(R) HD Graphics (Microsoft Corporation - WDDM 1.1),igdlh11.inf,03/24/2012 v8.15.10.2702
  5. .
  6. .
复制代码


工具是用PECMD2012打包的,导入资源如下,想修改的可以自己看看。
  1. -addoverwrite wcs\AUTODRV.WCS,SCRIPT,101,2052
  2. -addoverwrite wcs\x86\fdrv.cab,EXEDATA,100,2052
  3. -addoverwrite wcs\x86\A7Z.CAB,EXEDATA,101,2052
  4. -addoverwrite wcs\x86\devcon.cab,EXEDATA,102,2052
复制代码

评分

参与人数 7无忧币 +31 收起 理由
2012_12_21 + 5 链接挂了...
hehui + 1 很给力!
zmac2007 + 5
belenkwong + 5 赞一个!
tzxinqing + 5 支持大神,然而没有驱动包啊
freesoft00 + 5
xyzxp + 5 很给力!

查看全部评分

2#
发表于 2016-9-4 11:22:43 | 只看该作者
本帖最后由 pseudo 于 2016-9-4 11:28 编辑

谢谢分享。         
有没有支持xp/03pe的。                                                                                                                  。

点评

这个工具是用PECMD2012打包的,但是里面有个小工具,为了支持64位,是以win7的方式编译的,不知道是不是能在xp/03下工作。  详情 回复 发表于 2016-9-4 11:43
回复

使用道具 举报

3#
发表于 2016-9-4 11:35:20 | 只看该作者
Thanks
回复

使用道具 举报

4#
 楼主| 发表于 2016-9-4 11:43:16 | 只看该作者
pseudo 发表于 2016-9-4 11:22
谢谢分享。         
有没有支持xp/03pe的。                                                          ...

这个工具是用PECMD2012打包的,但是里面有个小工具,为了支持64位,是以win7的方式编译的,不知道是不是能在xp/03下工作。

点评

可以用新版PECMD打包下。DEVI命令换成DEVI *devcon。把devcon.exe内置,这样安装可能更保险一些。  详情 回复 发表于 2016-9-4 11:46
回复

使用道具 举报

5#
发表于 2016-9-4 11:46:25 | 只看该作者
本帖最后由 红毛樱木 于 2016-9-4 11:48 编辑
sp_star 发表于 2016-9-4 11:43
这个工具是用PECMD2012打包的,但是里面有个小工具,为了支持64位,是以win7的方式编译的,不知道是不是 ...


可以用新版PECMD打包下。DEVI命令换成DEVI *devcon,这样安装可能更保险一些。

点评

直接用了devcon.exe。有空再慢慢更新。  详情 回复 发表于 2016-9-4 11:57
回复

使用道具 举报

6#
 楼主| 发表于 2016-9-4 11:57:45 | 只看该作者
红毛樱木 发表于 2016-9-4 11:46
可以用新版PECMD打包下。DEVI命令换成DEVI *devcon,这样安装可能更保险一些。

直接用了devcon.exe。有空再慢慢更新。
回复

使用道具 举报

7#
发表于 2016-9-4 12:12:21 | 只看该作者
没看懂怎么用?直接执行就行?
回复

使用道具 举报

8#
发表于 2016-9-4 15:36:26 | 只看该作者
devcon.exe、dpinst.exe、devload.exe等几个程序安装驱动有什么不同?只是命令执行的方式不同,效果都一样是吗?
回复

使用道具 举报

9#
发表于 2016-9-4 16:05:10 | 只看该作者
pecmd也能打包,还不知道。学习一下
回复

使用道具 举报

10#
发表于 2016-9-4 16:08:08 | 只看该作者
好旬
回复

使用道具 举报

11#
发表于 2016-9-4 16:09:08 | 只看该作者
好像我理解错了,是命令打包在PECMD里,驱动还是外置的吧,先了
回复

使用道具 举报

12#
发表于 2016-9-4 16:09:19 | 只看该作者
好像我理解错了,是命令打包在PECMD里,驱动还是外置的吧,先了解下

点评

对的,驱动要外置的。搜索速度快的话,那么驱动包的规模就可以比较大,这就是这个工具的目的。  详情 回复 发表于 2016-9-5 11:51
回复

使用道具 举报

13#
发表于 2016-9-4 16:36:02 | 只看该作者
支持了支持楼主
回复

使用道具 举报

14#
发表于 2016-9-4 17:34:42 | 只看该作者
PE下的万能驱动工具!S大辛苦了

点评

不算万能吧.....  详情 回复 发表于 2016-9-5 11:52
回复

使用道具 举报

15#
 楼主| 发表于 2016-9-5 11:51:54 | 只看该作者
xzf680 发表于 2016-9-4 16:09
好像我理解错了,是命令打包在PECMD里,驱动还是外置的吧,先了解下

对的,驱动要外置的。搜索速度快的话,那么驱动包的规模就可以比较大,这就是这个工具的目的。
回复

使用道具 举报

16#
 楼主| 发表于 2016-9-5 11:52:21 | 只看该作者
JCDN 发表于 2016-9-4 17:34
PE下的万能驱动工具!S大辛苦了

不算万能吧.....
回复

使用道具 举报

17#
发表于 2016-9-5 15:47:50 | 只看该作者
前來學習。
回复

使用道具 举报

18#
发表于 2016-9-5 19:00:13 | 只看该作者
大师 我想问一下 10PE怎么隐藏资源管理器的搜索框

搜索框.PNG (1.32 KB, 下载次数: 89)

搜索框.PNG

点评

这个不知道,留着不好吗?  详情 回复 发表于 2016-9-5 19:43
回复

使用道具 举报

19#
 楼主| 发表于 2016-9-5 19:43:23 | 只看该作者
wimboot 发表于 2016-9-5 19:00
大师 我想问一下 10PE怎么隐藏资源管理器的搜索框

这个不知道,留着不好吗?

点评

精简版不需要搜索功能 留着碍事影响地址框长度  详情 回复 发表于 2016-9-5 19:55
回复

使用道具 举报

20#
发表于 2016-9-5 19:55:12 来自手机 | 只看该作者
sp_star 发表于 2016-9-5 19:43
这个不知道,留着不好吗?

精简版不需要搜索功能 留着碍事影响地址框长度
回复

使用道具 举报

21#
发表于 2016-11-20 21:02:58 | 只看该作者
本帖最后由 红毛樱木 于 2016-11-20 21:36 编辑

今天没事研究了一下代码,发现有两个地方不够完美。
只去掉了一种状态的硬件                                   Driver is running
还需要去掉另外一种状态的硬件                         Device is currently stopped


另外status获取的是“硬件 Id”,我测试了下,有的时候需要用"兼容 Id"来搞定。这个ID转换有点烦人,status不可以直接输出兼容的。



——————————————————————————————————————————————————
把长ID转换为短ID,上面应该可以实现。
比如把这个ID
PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15
转换成
PCI\VEN_10EC&DEV_8168



_________________________________________________________________________________
但是内置的fdrv.exe貌似不能这样匹配起来。

点评

Device is currently stopped是没考虑,但是好像也没看到这个状态。 "兼容 Id"这个不知怎么得到。不过这种情况比较少吧?我用着一直挺好啊。 时间太长了,不知记错了没....,fdrv.exe匹配逻辑是这样的: 如果输  详情 回复 发表于 2016-11-20 22:34
回复

使用道具 举报

22#
 楼主| 发表于 2016-11-20 22:34:24 | 只看该作者
红毛樱木 发表于 2016-11-20 21:02
今天没事研究了一下代码,发现有两个地方不够完美。
只去掉了一种状态的硬件                             ...


Device is currently stopped是没考虑,当时好像也没看到这个状态。
"兼容 Id"这个不知怎么得到。不过这种情况比较少吧?我用着一直挺好啊。

时间太长了,不知记错了没....,fdrv.exe匹配逻辑是这样的:
如果输入的HWID长,驱动文件中的HWID短,但前面部分完全相等,就算匹配上了。
如果输入的HWID短,驱动文件中的HWID长,就认为没有匹配。

点评

兼容id我这个网卡驱动就需要这个装。 fdrv.exe有源码改下匹配机制吗?  详情 回复 发表于 2016-11-20 23:54
回复

使用道具 举报

23#
发表于 2016-11-20 23:54:42 来自手机 | 只看该作者
sp_star 发表于 2016-11-20 22:34
Device is currently stopped是没考虑,当时好像也没看到这个状态。
"兼容 Id"这个不知怎么得到。不过 ...

兼容id我这个网卡驱动就需要这个装。
fdrv.exe有源码改下匹配机制吗?

点评

要是得到了兼容id,再用它搜索一遍应该就可以了吧? 源码:  详情 回复 发表于 2016-11-21 08:46
回复

使用道具 举报

24#
 楼主| 发表于 2016-11-21 08:46:23 | 只看该作者
红毛樱木 发表于 2016-11-20 23:54
兼容id我这个网卡驱动就需要这个装。
fdrv.exe有源码改下匹配机制吗?

要是得到了兼容id,再用它搜索一遍应该就可以了吧?
源码: fdrv.7z (3.27 KB, 下载次数: 37)

点评

应该用我上面说的换成短id让fdrv去搜索比较准。 pecmd也是匹配短id的,然后让系统自己去判断inf是否合适。  详情 回复 发表于 2016-11-21 12:05
回复

使用道具 举报

25#
发表于 2016-11-21 08:49:22 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

26#
发表于 2016-11-21 12:05:04 来自手机 | 只看该作者
sp_star 发表于 2016-11-21 08:46
要是得到了兼容id,再用它搜索一遍应该就可以了吧?
源码:

应该用我上面说的换成短id让fdrv去搜索比较准。

pecmd也是匹配短id的,然后让系统自己去判断inf是否合适。

点评

inf里列出了它支持的HWID,如果一个HWID比较长,说明对支持的硬件做了更多的限制。所以我认为不应该匹配短的ID,那可能是错误的匹配。 所有的匹配都是在TXT里进行的,里面的ID也可以自己编辑,只是可能容易出错。  详情 回复 发表于 2016-11-21 12:51
回复

使用道具 举报

27#
 楼主| 发表于 2016-11-21 12:51:33 | 只看该作者
红毛樱木 发表于 2016-11-21 12:05
应该用我上面说的换成短id让fdrv去搜索比较准。

pecmd也是匹配短id的,然后让系统自己去判断inf是否合 ...

inf里列出了它支持的HWID,如果一个HWID比较长,说明对支持的硬件做了更多的限制。所以我认为不应该匹配短的ID,那可能是错误的匹配。
所有的匹配都是在TXT里进行的,里面的ID也可以自己编辑,只是可能容易出错。

点评

如果用完整的ID匹配,不知道具体用哪个ID合适,或者先后顺序怎么排。 一般的驱动安装工具都是匹配短ID,然后用devcon.exe来安装的,应该比较程序的套路了。  详情 回复 发表于 2016-11-21 13:03
回复

使用道具 举报

28#
发表于 2016-11-21 13:03:31 | 只看该作者
本帖最后由 红毛樱木 于 2016-11-21 13:08 编辑
sp_star 发表于 2016-11-21 12:51
inf里列出了它支持的HWID,如果一个HWID比较长,说明对支持的硬件做了更多的限制。所以我认为不应该匹配 ...


如果用完整的ID匹配,不知道具体用哪个ID合适,或者先后顺序怎么排。
一般的驱动安装工具都是匹配短ID,然后用devcon.exe来安装的,应该比较成熟的套路了。

点评

完整的HWID不是devcon从硬件中读取的吗?可能之前没描叙清楚。 devcon读取的HWID和TXT文件(inf)中的HWID比较。 读取的HWID: PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15 TXT文件中ID: PCI\VEN_10EC&DEV_8  详情 回复 发表于 2016-11-21 14:19
回复

使用道具 举报

29#
 楼主| 发表于 2016-11-21 14:19:57 | 只看该作者
红毛樱木 发表于 2016-11-21 13:03
如果用完整的ID匹配,不知道具体用哪个ID合适,或者先后顺序怎么排。
一般的驱动安装工具都是匹配短ID ...

完整的HWID不是devcon从硬件中读取的吗?可能之前没描叙清楚。

devcon读取的HWID和TXT文件(inf)中的HWID比较。

读取的HWID:  PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15
TXT文件中ID: PCI\VEN_10EC&DEV_8168
==> 匹配成功

读取的HWID:  PCI\VEN_10EC&DEV_8168
TXT文件中ID: PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15
==> 匹配失败
这个逻辑不合理吗?

点评

你开始说的我明白意思。 现实使用中,可能需要使用两次匹配或者更多。 读取的HWID: PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15 TXT文件中ID: PCI\VEN_10EC&DEV_8168 ==> 匹配成功 读取的HWID: PCI\VE  详情 回复 发表于 2016-11-21 14:31
回复

使用道具 举报

30#
发表于 2016-11-21 14:31:39 | 只看该作者
sp_star 发表于 2016-11-21 14:19
完整的HWID不是devcon从硬件中读取的吗?可能之前没描叙清楚。

devcon读取的HWID和TXT文件(inf)中的HW ...

你开始说的我明白意思。
现实使用中,可能需要使用两次匹配或者更多。

读取的HWID:  PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15
TXT文件中ID: PCI\VEN_10EC&DEV_8168
==> 匹配成功

读取的HWID:  PCI\VEN_10EC&DEV_8168
TXT文件中ID: PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15
==> 匹配失败
-----------------------------------------------------------------------------------------------------



还有另外一种情况,用devcon读取的ID信息如下:
硬件Id:PCI\VEN_10EC&DEV_8168&SUBSYS_86771043&REV_15
兼容Id:PCI\VEN_10EC&DEV_8168&REV_15
而TXT文件中ID:PCI\VEN_10EC&DEV_8168&REV_15
这时候只能用兼容ID来搞定了。
当然这只是一种情况,可能还有别的情况,只能遇到一种排除一种了。

点评

改这个函数就行了  详情 回复 发表于 2016-11-21 15:16
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-20 03:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表