[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 【已解决】重装系统后硬件特征码会变,有什么是不变的?

因为现在的网络备份程序都不支持未连接网线状态下备份,一些笔记本的使用不方便,所以自编了个批来弄备份和还原。原理是查找到当前网卡设置存储在注册表的内容放到备份文件里,再把硬件特征码放进去。以前也在测试程序时也用过不下十来套不同的XP、2003,没发现过这个值会因为重装系统改变。上次是使用的一套精简版取出的值(去掉了&符号)
8139网卡值为:PCI\VEN_10ECDEV_8139SUBSYS_24201509REV_10\47562792048F0
无线网卡的值:PCI\VEN_168CDEV_001ASUBSYS_1052168CREV_01\538C2DB1800038F0
但这次使用电脑公司告别版9.9来装的时候却发现我自已本本上的硬件特征码和以前保存下来的特征码不一样!
8139网卡值为:PCI\VEN_10ECDEV_8139SUBSYS_24201509REV_10\416793A72048F0
无线网卡的值:PCI\VEN_168CDEV_001ASUBSYS_1052168CREV_01\530393DD700038F0我是使用这个来提取硬件码的:
reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\网卡注册表值\Connection" /v "PnpInstanceID"
这种问题是怎么发生的呢?mac值也是可以改变的,最可怕的是可以被arp病毒改变。那我们还有什么可以作为判断硬件的呢?

[ 本帖最后由 9zhmke 于 2009-4-8 20:00 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

又找了个系统来装,硬件ID又变回去了,真奇怪

TOP

你第二次装的是OEM版的系统吧,呵呵

TOP

硬件的ID和系统的版本不应该相关的吧? 我之前也试过很多版本没有发现这个值会变过。 刚又查证了下,这个东海版本是假的。但假的也不应该使硬件ID变化吧?

TOP

硬件ID确实是有的变化
PCI\VEN_10ECDEV_8139SUBSYS_24201509REV_10\前面是不变的,后面一部分416793A72048F0有可能有变化,所以我写的驱动备份代码里面已经舍去了后面一部分。仅以我所了解的皮毛分析下原因,其后面一部分变化可能取决于设备的硬件中断请求号不同,而中断请求是自动分配的,在安装设备驱动它自动判断适用哪个中断请求号,如果这个中断请求号被其它设备占用了便寻找下一个相适用的中断请求号,直到找为止此驱动才能被正确安装,也许后面的那一部分可能保存中断请求号或内存范围的标记。以上仅仅是个人分析如有雷同、纯属巧合^_^
如果你要分析此规律变化,试试判断2次安装系统时安装设备驱动顺序是不是相同?

TOP

从Windows2000开始,大量使用了共享中断技术以避免在98中频繁出现的中断冲突。已经装好的系统中,即使使用BIOS设置更改中断号,这个ID好象也没有变化。安装的顺序并不一定影响中断和地址分配,也许只有共享中断的情况下才存在这种现象吧。这段位置我想可能和中断相关但不一定是中断。

据你的看法,是后面的末尾6位数字也会发生变化吗?

TOP

硬件的ID值仅靠前面一段是否足够判断为同一硬件呢? 我还没有试过比如同时使用两块相同的8139网卡,还原时不允许把设置错误地还原到另一网卡。

我关于你的还原驱动,我想集成到我的优化程序里面(免费程序),可以吗?另外我在你的程序里找到个BUG,从wmic读出的数据中有极少数硬件自带一个末尾空格,但程序默认末尾无空格,所以把以下内容应改动一下:
for /f "tokens=1,2,3 delims=," %%i in ('type %Tempfile%^|find /i "oem"') do  call :evStart  %%i %%j %%k
改为:
for /f "tokens=1,2,3 delims=," %%i in ('type d:\temp.tmp^|find /i "oem"') do (
setlocal enabledelayedexpansion
        :bakdrvtmploop
        set tmp1=%%i
        set tmp2=%%j
        set tmp3=%%k
        set tmp1=!tmp1: "="! & if !tmp1==%%i goto bakdrvtmploop
        set tmp2=!tmp2: "="! & if !tmp1==%%j goto bakdrvtmploop
        set tmp3=!tmp3: "="! & if !tmp1==%%k goto bakdrvtmploop
        call :evStart !tmp1! !tmp2! !tmp3!
        )
还有一种情况:极个别硬件在inf中带了路径,我遇到的是指下了下一级某个子目录,不知道你对这种情况是怎么处理的。你的最新版驱动备份还原是否就是置顶贴里的那个? 如果有新的,是否可以共享一下?

[ 本帖最后由 9zhmke 于 2009-4-6 14:54 编辑 ]

TOP

硬件的ID值仅靠前面一段就是判断为同一硬件

devcon hwids @pci*
命令执行好后
PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\3&61AAA01&0&58
    Name: Realtek RTL8139/810x Family Fast Ethernet NIC
    Hardware ID's:
        PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10
        PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC
        PCI\VEN_10EC&DEV_8139&CC_020000
        PCI\VEN_10EC&DEV_8139&CC_0200

    Compatible ID's:
        PCI\VEN_10EC&DEV_8139&REV_10
        PCI\VEN_10EC&DEV_8139
        PCI\VEN_10EC&CC_020000
        PCI\VEN_10EC&CC_0200
        PCI\VEN_10EC
        PCI\CC_020000
        PCI\CC_0200
绿的部分都是它的标准硬件ID

之前用wmic不止存在末尾空格还有前面有多余空格,所以我放弃了用wmic,最新的就是置顶贴里Dev2008-7-4.rar那个,这个也是目前为止最稳定的,如果还要做优化只是针对适用于Vista方面优化了,只是我的老机不能上Vista,所以暂时搁着。集成到你的优化程序是完全可以的。

TOP

谢谢你的回答,这样看来针对网卡使用我只用取前面部分就可以了,那我应该取多少位或者说舍去最后多少位呢?

另外在VBS驱动备份版里给你回了个贴:
http://bbs.bathome.net/viewthread ... ge=4&extra=page%3D1

[ 本帖最后由 9zhmke 于 2009-4-6 23:35 编辑 ]

TOP

PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\3&61AAA01&0&58
舍去最后一个\后面的,包括最后一个\

TOP

返回列表