无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: NicTense
打印 上一主题 下一主题

【原创】为你的PE系统添加计算机型号和CPU识别功能

[复制链接]
151#
发表于 2010-3-14 10:00:56 | 只看该作者

这个位置我知道。

和1E比较。恩正好是30

有间隔是因为有空格字符,你得到结果自己按30个字符分开就好了。

你要说地址,我看下。。。在那个下面2行。。。
0001277Ch

参考字串
8D 85 F4 FD FF FF 50 FF 15 D8 11 42 58 83 F8 1E 7E 52

8D 85 F4 FD FF FF 50 FF 15 D8 11 42 58 83 F8 3C 7E 52


3C是1E*2,60个字符够了吧,不够自己加。
回复

使用道具 举报

152#
 楼主| 发表于 2010-3-14 13:20:27 | 只看该作者
原帖由 slore 于 2010-3-14 10:00 发表
和1E比较。恩正好是30

有间隔是因为有空格字符,你得到结果自己按30个字符分开就好了。

你要说地址,我看下。。。在那个下面2行。。。
0001277Ch

参考字串
8D 85 F4 FD FF FF 50 FF 15 D8 11 42 58  ...


哈,谢了,这下完美了



帅不?
回复

使用道具 举报

153#
 楼主| 发表于 2010-3-14 13:24:03 | 只看该作者
原帖由 longlaozong 于 2010-3-14 00:33 发表
楼主,可以改Win7PE吗?


没用过win7pe,我对win7pe没兴趣,所以也没研究过

这个直接用到win7pe肯定是不行的

不过原理是一样的,只是win7貌似不用oeminfo.ini,相关信息应该是注册项里,具体位置你可以找一下
回复

使用道具 举报

154#
发表于 2010-3-14 14:09:27 | 只看该作者
原帖由 slore 于 2010-3-14 10:00 发表
和1E比较。恩正好是30

有间隔是因为有空格字符,你得到结果自己按30个字符分开就好了。

你要说地址,我看下。。。在那个下面2行。。。
0001277Ch

参考字串
8D 85 F4 FD FF FF 50 FF 15 D8 11 42 58  ...



那2003PE如何改呢?

[ 本帖最后由 datang 于 2010-3-14 14:19 编辑 ]

mysys.jpg (21.68 KB, 下载次数: 103)

mysys

mysys
回复

使用道具 举报

155#
发表于 2010-3-14 14:19:01 | 只看该作者
这方法不错的
辛苦了
回复

使用道具 举报

156#
发表于 2010-3-14 14:55:37 | 只看该作者
原帖由 datang 于 2010-3-14 14:09 发表



那2003PE如何改呢?


就再改第一个地方后2行附近,第一个1E


FF FF FF 15 00 12 1D 57 83 F8 1E 7E 57 6A 20 8D
回复

使用道具 举报

157#
发表于 2010-3-14 16:36:43 | 只看该作者
感谢了,不错的教程。
回复

使用道具 举报

158#
发表于 2010-3-14 18:15:26 | 只看该作者
感谢slore,这回可以了,帅呆了

001.JPG (29.27 KB, 下载次数: 115)

001

001
回复

使用道具 举报

159#
发表于 2010-3-15 13:48:59 | 只看该作者
最新的Patch里面有严重BUG。。。

if "%t:@=%"=="%t%" if "%t:Hz="=="%t%" (

if "%t:@=%"=="%t%" if "%t:Hz=%"=="%t%" (

找这个错误用了echo on。。。你的第一个for效率太低了,没有及时退出,
查找字符串建议配合findstr能省很多。。。

要停电了,晚上再看看给你改改吧。

AMD的会多个@。。。

频率从Core Speed取。。。intel的才有@
回复

使用道具 举报

160#
 楼主| 发表于 2010-3-15 14:10:54 | 只看该作者
原帖由 slore 于 2010-3-15 13:48 发表
最新的Patch里面有严重BUG。。。

if "%t:@=%"=="%t%" if "%t:Hz="=="%t%" (

if "%t:@=%"=="%t%" if "%t:Hz=%"=="%t%" (

找这个错误用了echo on。。。你的第一个for效率太低了,没有及时退出,
查找字 ...


确实是个bug,写太快,漏掉了,多几个你这样的人,我就不用那么辛苦每个bug都要自己发现了

不过用findstr没必要,我写批处理的原则是,能不用外部命令的尽量不用

至于第一个for的效率问题其实不是问题,影响就是几毫秒的事情

如果要提高效果,只要加一个 goto :eof 就可以了,不需要额外的外部命令的

Core Speed的字段不是核定频率,是实际频率,这个不是我要的

其实这个频率主要是给那些不显示cpu频率用的,同一规格都会在型号后面显示 @ 核定频率

你说的多一个@是什么个情况

比如说 AMD Athlon 64 Processor 3000+ @ 2.00 GHz

这样应该是正确的,不算多个@吧

[ 本帖最后由 NicTense 于 2010-3-15 14:33 编辑 ]
回复

使用道具 举报

161#
发表于 2010-3-15 17:45:17 | 只看该作者
AMD Athlon 64 Processor 4000+ @
得到是这个。。。


不爱用外部命令就用个变量吧。

类似
set flag=0
for /f "tokens=1,*" %%i in (temp.txt) do (
if "%%i"=="Specification" set t=%%j&set /a flag+=1
if "%%i"=="product" set m=%%j&set /a flag+=1
if !flag! EQU 2 goto :ExitFor
)
:ExitFor

毕竟CPUZ得到结果很多行。。你就用几行罢了。
你echo on看的话,很多没用的信息都要在循环里面比较一边。。。
回复

使用道具 举报

162#
 楼主| 发表于 2010-3-15 18:34:18 | 只看该作者
原帖由 slore 于 2010-3-15 17:45 发表
AMD Athlon 64 Processor 4000+ @
得到是这个。。。


不爱用外部命令就用个变量吧。

类似
set flag=0
for /f "tokens=1,*" %%i in (temp.txt) do (
if "%%i"=="Specification" set t=%%j&set /a fl ...



AMD Athlon 64 Processor 4000+

你的电脑是这个cpu吗,能不能把你在tangope下执行 cpuz -txt=amdcpu 后生成的amdcpu.txt上传上来

另外有没有7z以外的可以解开iso文件的命令行工具,单文件,体积比7z小就行

[ 本帖最后由 NicTense 于 2010-3-15 19:07 编辑 ]
回复

使用道具 举报

M
163#
发表于 2010-3-15 19:20:11 | 只看该作者
学习了,谢谢楼主指点技巧!
回复

使用道具 举报

164#
发表于 2010-3-16 19:55:33 | 只看该作者
原帖由 NicTense 于 2010-3-15 18:34 发表



AMD Athlon 64 Processor 4000+

你的电脑是这个cpu吗,能不能把你在tangope下执行 cpuz -txt=amdcpu 后生成的amdcpu.txt上传上来

另外有没有7z以外的可以解开iso文件的命令行工具,单文件,体积比 ...



不用传了,是你CPUZ的BUG。。。



if "%t:@=%"=="%t%" if "%t:Hz=%"=="%t%" if not "%f%"=="" (
for /f "tokens=1,2,3" %%i in ("%f%") do (
  set c=%%j%%k
  if %%j GTR 1000 if /i "%%k"=="MHz" (
   set c=%%j
   set c=!c:~0,-3!.!c:~-3!
   set c=!c:~0,-1!GHz
  )
)
set t=%t% @ %c%
)

明显得用
set t=%t% @ !c!

不知道你的截图为什么能得到频率,看你的代码%c%是for内部才赋值的,
本身一定是空的。所以应该都是只有@

我那个电脑Stock 显示是800 MHz
Core Speed 显示 2110 MHz

所以我想你读取Core Speed才准确。至少XP上我看显示的是 2.11GHz 而不会是 800MHz
回复

使用道具 举报

165#
 楼主| 发表于 2010-3-16 20:42:11 | 只看该作者
原帖由 slore 于 2010-3-16 19:55 发表



不用传了,是你CPUZ的BUG。。。



if "%t:@=%"=="%t%" if "%t:Hz=%"=="%t%" if not "%f%"=="" (
for /f "tokens=1,2,3" %%i in ("%f%") do (
  set c=%%j%%k
  if %%j GTR 1000 if /i "%%k"=="M ...


呵呵,不愧是除bug大师阿,这都给你发现了

主要是我写了n个版本,测试的时候没那么多判断,老是犯这种低级错误。。。
其实跟是不是for内部赋值的没什么关系,主要是忘了他在if的括号内


Core Speed  797.4 MHz
Multiplier x FSB 151.5 x 5.3 MHz
Rated Bus speed  21.1 MHz
Stock frequency  1400 MHz

core speed的问题,我这里cpuz提出来的数据如上,明显core的是瞬间实际运行的频率,这个数据貌似没啥作用啊,因为系统闲置的时候自动降频
而 stock 字段貌似就是额定频率

所以才说把你的导出数据上传上来,我好对比有什么区别

[ 本帖最后由 NicTense 于 2010-3-16 20:46 编辑 ]
回复

使用道具 举报

166#
发表于 2010-3-16 21:01:01 | 只看该作者
看来两个数据的真实度都无法保证呀。

比较头疼,不然先不加了?

XP下的频率也不是固定的。你一说我看了下,打开CPUZ显示核心频率997.43MHZ(是不是双核原因?突然又1662.4,MHz)
属性面板显示 980MHz,但是多数是1.66GHz。

系统是从xpsp2res.dll里面得到信息的,不知道这个精简下能不能小些,毕竟5MB。。。
而且也没试直接放PE里面能不能用。。。

就先你的方案算了,不过%c%一定得改!c!,不然你整个计算频率的都是无用功。
回复

使用道具 举报

167#
 楼主| 发表于 2010-3-16 21:13:38 | 只看该作者
原帖由 slore 于 2010-3-16 21:01 发表
看来两个数据的真实度都无法保证呀。

比较头疼,不然先不加了?

XP下的频率也不是固定的。你一说我看了下,打开CPUZ显示核心频率997.43MHZ(是不是双核原因?突然又1662.4,MHz)
属性面板显示 980MHz,但 ...


那个文件倒是可以精简到很小,如果要加上网功能,这个文件是一定要加的
但是维护版,为个频率加就太不值了

维护版所有的位图,图标,动画都可以删,应该是1M左右,还是太大了

core字段肯定是不行的,因为这个字段就是实时的频率,系统根据实际需要调节的,可能是3G,也可能是800 M

stock 那个字段按道理应该可以才对啊,按字面解释也是 常用的频率,平常的频率,应该就是额定的频率才对啊,我试了我的几个电脑都正常啊

莫非又是amd和intel的问题?

%c%一定得改!c!, 这个我知道,既然是bug,肯定要改的

我原来测试的时候,为了方便,没有加上面的if那行,所以用%是没问题的,这个就是可以正常显示频率的原因,因为整个for循环都执行完毕才读入这行

后来加了if,把set加到了if的括号里面,忘了这个时候,这行实际上跟for等同于一行,所有赋值都得延迟,直接就放上去了,所以到你那就不显示频率了,剩下了@

你看东西挺仔细的,比我强,我基本上写几行就会弄错1个小符号什么的
回复

使用道具 举报

168#
发表于 2010-3-16 21:26:53 | 只看该作者
变量延时。。。我知道的啦。


既然和网络功能有关那就加上吧,大1MB我可以接受,我想大家都可以接受。
(虽然维护不过提供扩展必要的东西还是要的。)
我最早用的维护PE,用别人的MMC组件,网络组件都不能用,我那个郁闷呀。。。
都说是完整依然这样,所以
内核大一点无所谓,一定要方便扩展。。。

仔细谈不上呀,看到 AMD .. 4000+ @,多马虎才能看不到呀。
开始以为太长了,但是看注册表就是单@

代码谁也一眼看不出来呀,echo on,cmd下调试看哪里出问题,自然这里断掉了,一看在括号里面
就是改!c!了。
回复

使用道具 举报

169#
发表于 2010-3-17 21:56:43 | 只看该作者
看下有没有新的进展了.两天没看.顶上来再仔细看了.
回复

使用道具 举报

170#
 楼主| 发表于 2010-3-17 22:02:22 | 只看该作者
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=160583&page=34#pid1910756

496楼,这个基本上应该定案了,就等反馈上来,看看还有没有什么字段需要过滤的

第一行,显示 生产商和型号
第二行,显示 格式化后的 cpu信息
第三行,显示 主板北桥芯片
第四行,显示 内存

不过我的sysdm.cpl改了位置,如果你要用到03pe的话,对应的位置也得改一下
回复

使用道具 举报

171#
发表于 2010-3-17 22:16:06 | 只看该作者
很强大,但是我觉得没必要了PE 维护用而已!
回复

使用道具 举报

172#
发表于 2010-3-17 23:25:20 | 只看该作者
select Name,CurrentClockSpeed,MaxClockSpeed from Win32_Processor


系统是用WMI查询的。。。
PE下貌似WMI运行不了,所以就得不到频率了。

xpsp2res.dll里面是读取了个字符串格式 %s,%s
就是
频率,内存
回复

使用道具 举报

173#
 楼主| 发表于 2010-3-17 23:34:08 | 只看该作者
原帖由 slore 于 2010-3-17 23:25 发表
select Name,CurrentClockSpeed,MaxClockSpeed from Win32_Processor


系统是用WMI查询的。。。
PE下貌似WMI运行不了,所以就得不到频率了。

xpsp2res.dll里面是读取了个字符串格式 %s,%s
就是
频率,内存


算了,不管这个频率了
根据反馈上来的资料看

intel的频率,本来就有,stock读了也用不着
amd在xp下好像多数都有stock字段的
但是pe下有的就没了
这个不管了,读不到就不显示频率了

生产商,型号,主板北桥,大部分电脑可以读到,有些是unknown之类的,就显示 Personal Computer了
已经定案,弄到最新的TPEPatch补丁里面去了
如果有空的话,看看你那显示正不正常
我测试过应该是没问题了,该过滤的字段应该也差不多都加进去了

另外
xpsp2res.dll貌似资源都删掉只有几百k,只是为了个频率没价值,90%的cpu都可以显示频率的
那个core就算了,读了也没用,都不是额定频率
回复

使用道具 举报

174#
发表于 2010-3-18 15:00:29 | 只看该作者

回复 #1 NicTense 的帖子

方法真多,很好,很强大。
回复

使用道具 举报

175#
 楼主| 发表于 2010-3-18 16:57:35 | 只看该作者
原帖由 slore 于 2010-3-17 23:25 发表
select Name,CurrentClockSpeed,MaxClockSpeed from Win32_Processor


系统是用WMI查询的。。。
PE下貌似WMI运行不了,所以就得不到频率了。

xpsp2res.dll里面是读取了个字符串格式 %s,%s
就是
频率,内存


我看了一下,wmi太恐怖了,涉及的文件几十个,所以不用考虑了
而且如果wmi能用的话,xpsp2res.dll貌似就没用了

因为用
wmic cpu list brief
就能得到cpu信息了

貌似这个wmic很强大的样子,强大到命令行帮助估计都得看好几天
回复

使用道具 举报

176#
发表于 2010-3-18 17:05:28 | 只看该作者
xpsp2res.dll 无所谓就是要字符串格式,我可以改到别的地方或者直接写进去.
如果网络要的话还是放进去的好.


WMI的确很强大,没准识别不要移动硬盘也可能是没WMI呢。

很大那也没办法了。

更新内核吧.

SETWP.CMD给你改了记得也更新进去.
回复

使用道具 举报

177#
 楼主| 发表于 2010-3-18 17:22:41 | 只看该作者
原帖由 slore 于 2010-3-18 17:05 发表
xpsp2res.dll 无所谓就是要字符串格式,我可以改到别的地方或者直接写进去.
如果网络要的话还是放进去的好.


WMI的确很强大,没准识别不要移动硬盘也可能是没WMI呢。

很大那也没办法了。

更新内核吧 ...


之前没研究过wmi,粗略看了一下后,如果wmi能用,cpuz也用不着了

嗯,setwp确实忘记bmp和文件空格的问题,谢了

不过你那个判断可能要改一下

判断是否userprofile下,在特定情况下还是会出问题

比如中途运行一个  pecmd wall x:\1.bmp

所以要改为判断那个wallpaper是不是 x:\tools\pic目录下的文件,如果是才取文件名

晚上我改好再发上来,如果你有空再看看还有没有错
回复

使用道具 举报

178#
发表于 2010-3-18 17:28:58 | 只看该作者
原帖由 NicTense 于 2010-3-18 17:22 发表


之前没研究过wmi,粗略看了一下后,如果wmi能用,cpuz也用不着了

嗯,setwp确实忘记bmp和文件空格的问题,谢了

不过你那个判断可能要改一下

判断是否userprofile下,在特定情况下还是会出问题

...



因为bmp是不用转换的,所以只读converted那个地方不行.

那个判断只是判断是否经过转换,转换的话会放到userprofile\...\wallpaper1.bmp

要是不是转换的,X:\1.bmp

按F10
会在Pic目录找1.bmp文件名之后的文件.如果没有就设置Pic目录的第一个图片,应该没有什么问题.

这边装了驱动防火墙我虚拟机用不了,你可以测试下,中途改,什么改已经设置过的文件名,壁纸
还是可以换的。
回复

使用道具 举报

179#
发表于 2010-3-18 17:51:43 | 只看该作者
Qemu这个虚拟机在有驱动防火墙的情况下也可以使用的,它好象不安装驱动。
用来简单测试iso还是没有问题的。论坛里有下载的。
回复

使用道具 举报

180#
发表于 2010-3-19 10:58:19 | 只看该作者
此贴是2010本版最大兴奋点的成果.不能不再看.

关于计算机型号.品牌机器.品排主板一般显示没问题.对新机真伪识别有意义.
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 13:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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