无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-9 13:32:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
据我所知,大部分PE的系统属性都是显示不了计算机型号和cpu信息的
有什么简单快捷的方法能实现这个功能吗?
答案是有的,这里提供几个方案,请自行选择。

方案一:此方案为slore原创,由于帖子被合并了,所以在这里一并列出

此方案仅能显示cpu信息,优点是利用系统本身的功能,不占用oeminfo的字段
方法是直接修改sysdm.cpl的指定字节


xp的sysdm.cpl 搜索
CC 8B FF 55 8B EC 81 EC 24 04 00 00 83 7D 18 00
然后将最后一个00改为02即可。

2003的sysdm.cpl 搜索
8B 75 1C 89 85 E8 FB FF FF 8B 45 0C 33 DB 39 5D 18 57
改为
8B 75 1C 89 85 E8 FB FF FF 8B 45 0C EB 03 39 5D 18 57



方案二:纯注册表方案,不需要额外的软件支持,缺点同方案一,只能显示cpu信息
   根据slore提供的注册表信息,对其进行后期处理后利用OEMINFO.INI显示出来,此方案无需改动sysdm.cpl,且显示效果较为美观
   首先创建一个cpu.cmd文件,放于system32目录下,源代码如下: cpu1.rar (659 Bytes, 下载次数: 224)

@echo off
::用于获取CPU信息,并显示在系统属性页面
::NicTense 写于 2010.03.12
setlocal enableextensions
setlocal enabledelayedexpansion
for /f "tokens=1,2,*" %%i in ('reg query HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0 /v ProcessorNameString') do (
set t=%%j
set t=%%k
)
set t=%t:(TM)=%
set t=%t:(R)=%
set t=%t:)=%
set t=%t:(=#%
set c=
for %%k in (%t%) do if "!c!"=="" (set c=%%k) else set c=!c! %%k
if not "%c:~52%"=="" set c=%c:~0,52%
set t=%c%
set n=0
:loop
set /a n+=1
if /i %n% GEQ 20 goto next
if "%t:~-1%"=="#" goto next
set t=%t:~0,-1%
goto loop
:next
if "%t:~-1%"=="#" set c=%t:~0,-1%
if not exist OEMINFO.INI (
echo [General]>OEMINFO.INI
echo Manufacturer=%c%>>OEMINFO.INI
goto end
)
if exist temp.txt del temp.txt >nul
for /f "delims== tokens=1,*" %%i in (OEMINFO.INI) do if /i "%%i"=="Manufacturer" (
echo Manufacturer=!c!>>temp.txt
) else (
set t=%%i
set t=!t: =!
if "!t:~0,1!"=="[" ( echo %%i>>temp.txt ) else echo %%i=%%j>>temp.txt
)
move /y temp.txt OEMINFO.INI >nul
:end


接下来最后的一步就是在pecmd.ini中添加一句,让系统在启动时执行(加在启动项里也一样)

EXEC !%SystemRoot%\system32\cpu.cmd



方案三:CPUZ增强方案,此方案需要cpuz这个cpu检测软件,优点是可以显示计算机型号等信息

由于大部分PE中都集成了CPUZ这个CPU系统检测软件,利用它可以很简单地实现这一功能,
只要创建一个CMD文件,命名为cpu.cmd,放入system32目录下,代码如下: cpu.rar (679 Bytes, 下载次数: 237)

@echo off
::用于获取计算机型号和CPU信息,并显示在系统属性页面
::NicTense 写于 2010.03.10
setlocal enabledelayedexpansion
set c=
%SystemDrive%\tools\cpuz\cpuz.exe -txt=temp
for /f "tokens=1,*" %%i in (temp.txt) do (
if "%%i"=="Specification" set t=%%j
if "%%i"=="product" set m=%%j
)
set t=%t:(TM)=%
set t=%t:(R)=%
set t=%t:)=%
set t=%t:(=#%
set c=
for %%k in (%t%) do if "!c!"=="" (set c=%%k) else set c=!c! %%k
if not "%c:~52%"=="" set c=%c:~0,52%
set t=%c%
set n=0
:loop
set /a n+=1
if /i %n% GEQ 20 goto next
if "%t:~-1%"=="#" goto next
set t=%t:~0,-1%
goto loop
:next
if "%t:~-1%"=="#" set c=%t:~0,-1%
if exist temp.txt del temp.txt >nul
if not exist OEMINFO.INI (
echo [General]>OEMINFO.INI
echo Manufacturer=%c%>>OEMINFO.INI
echo Model=%m%>>OEMINFO.INI
goto end
)
for /f "delims== tokens=1,*" %%i in (OEMINFO.INI) do if /i "%%i"=="Manufacturer" (
echo Manufacturer=!c!>>temp.txt
) else (
if "%%i"=="Model" (
echo Model=!m!>>temp.txt
) else (
set t=%%i
set t=!t: =!
if "!t:~0,1!"=="[" ( echo %%i>>temp.txt ) else echo %%i=%%j>>temp.txt
)
)
move /y temp.txt OEMINFO.INI >nul
:end


注意红色部分要换成实际的路径,这里利用了OEMINFO.INI这个文件
所以system32中如果有这个文件,必须符合规范,即必须存在这几行

[General]
Manufacturer=
Model=


接下来最后的一步就是在pecmd.ini中添加一句,让系统在启动时执行(最好是跟在shel后面,这样不会感觉到延迟,或者放于启动项)

EXEC !%SystemRoot%\system32\cpu.cmd


(注:如果你的cpuz.exe是在外置包中,则上面这行必须加到加载外置包的ini文件中,若外置包为wim格式,必须
         在moun语句之后,即确保cpuz.exe可以访问之后,并请对应修改cpu.cmd中的路经,若pe中没有pecmd也
         没关系,只要让pe在启动时执行这个批处理即可)

好了,大功告成,打开系统属性看看吧,测试成功了不妨抓个图贴上来,看看显示的什么

下载  记得先打开修改cpuz.exe的实际路经,参见上方红色字体部分



如果将代码中用蓝色粗体表示的c和m对调,可交换cpu和计算机型号的显示位置,见下图



下载这个版本: cpu1.rar (679 Bytes, 下载次数: 204) 记得打开修改cpuz.exe的实际路经,参见上方红色字体部分

原文出处:http://hi.baidu.com/nictense/blog/item/c6ce6d1ef922c3fee0fe0b5d.html


ps: 如果sysdm.cpl未经处理,由于每行显示数字有限,方案三的第二个版本中cpu信息可能会显示不完全,解决方法:

修改sysdm.cpl的101对话框的以下2行,别忘了重新编译(工具可用reshacker)

   CONTROL "", 63, "Link Window", 0x50000000, 141, 149, 110, 18
   CONTROL "", 64, "Link Window", 0x50000000, 141, 170, 110, 9

 将其中的110改大一点就可以了,改为160以上应该就可以了,但是要注意位置是否允许
 未修改的sysdm.cpl该位置左侧有一大图片,所以你只能调整布局,或者将图片位置改小
 要不就采用方法1

   附上一个改好的sp3的sysdm.cpl sysdm.rar (81.08 KB)


方案四:方案一和方案三的结合体,利用方案一解放出oeminfo.ini的一个字段,多出来的这个字段可以用显示显卡信息或自定义信息

由于这个方案操作起来比较麻烦,具体方法不写了,有兴趣的可参考方案一和方案三自行编写,或参考TangoPE0311Patch中的sysdm.cpl和cpuz.cmd

显示效果如下:



本人近期发布帖子汇总,方便查询

【下载】Tango WinPE 2010 虎年珍藏版,32M新版XP3内核PE

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

【原创】TXTSETUP.SIF减肥和检查错误批处理TSLite

【原创】玩转PE墙纸(开机随机显示墙纸+一键切换循环显示)

【下载】通用型PE一键美化工具PEBeautify+TangoPE美化包(PE美化,只需10秒)

【分享】利用PECMD和MSPAINT实现零体积一键截图功能

【原创】shell32.dll的终极精简&美化教程 (这个是很久前的了)

[ 本帖最后由 NicTense 于 2010-3-23 18:57 编辑 ]

评分

参与人数 1无忧币 +10 收起 理由
66369 + 10 原创内容

查看全部评分

2#
发表于 2010-3-9 13:42:50 | 只看该作者
☆۩۞۩☆【谢谢提供!】 ☆۩۞۩☆
回复

使用道具 举报

3#
发表于 2010-3-9 13:51:19 | 只看该作者
向老大学习,谢谢了。
回复

使用道具 举报

4#
发表于 2010-3-9 14:07:28 | 只看该作者
方法倒是挺好,不过,如果cpuz无法识别的话,启动的时候加载到这里是否会有问题?

其实pe中识别不识别这个无所谓,但方法很好。
回复

使用道具 举报

5#
 楼主| 发表于 2010-3-9 14:10:39 | 只看该作者
原帖由 freesoft00 于 2010-3-9 14:07 发表
方法倒是挺好,不过,如果cpuz无法识别的话,启动的时候加载到这里是否会有问题?

其实pe中识别不识别这个无所谓,但方法很好。



偶弄PE只为了一个字—帅!

无法识别没任何影响,大不了显示一个奇怪的cpu信息,比如unkown cpu之类的

貌似我没见过cpuz认不出的cpu,除非你的版本太老了
回复

使用道具 举报

6#
发表于 2010-3-9 14:23:33 | 只看该作者
学习了,谢谢楼主指点技巧!
回复

使用道具 举报

7#
发表于 2010-3-9 14:55:05 | 只看该作者
我发现 天使兄 真的很聪明!呵呵,好东西!
回复

使用道具 举报

8#
发表于 2010-3-9 15:15:44 | 只看该作者
很不错,间接的利用了CPU-Z实现显示CPU型号的功能,支持一个

以前都是看开机POST或者进PE用everest看个仔细
回复

使用道具 举报

9#
发表于 2010-3-9 15:50:09 | 只看该作者
好玩的..........上个图来助兴...

回复

使用道具 举报

10#
 楼主| 发表于 2010-3-9 16:05:38 | 只看该作者
原帖由 66369 于 2010-3-9 15:50 发表
好玩的..........上个图来助兴...

83937


你的sysdm.cpl 显示这2行信息的地方设置得短了点,看样子应该是100左右,信息没显示完

最好设长一点,200-220就差不多了
回复

使用道具 举报

11#
发表于 2010-3-9 16:11:28 | 只看该作者
要是cpuz能自动判断加载双核和单核的notskrnl.exe就好了
回复

使用道具 举报

12#
 楼主| 发表于 2010-3-9 16:14:26 | 只看该作者
原帖由 zhangyuok 于 2010-3-9 16:11 发表
要是cpuz能自动判断加载双核和单核的notskrnl.exe就好了


cpuz判断单双核很简单,但是cpuz的运行在加载notskrnl.exe之后,这是个矛盾

其实我不知道pe判断单双核有什么意义,除非是用来看电影玩游戏什么的,如果就维护而已,只要能启动到基本功能状态就够了
回复

使用道具 举报

13#
发表于 2010-3-9 16:31:30 | 只看该作者
原帖由 NicTense 于 2010-3-9 16:14 发表


cpuz判断单双核很简单,但是cpuz的运行在加载notskrnl.exe之后,这是个矛盾

其实我不知道pe判断单双核有什么意义,除非是用来看电影玩游戏什么的,如果就维护而已,只要能启动到基本功能状态就够了

能否上传一个改好的SYSDM.CPL的文件给我
回复

使用道具 举报

14#
发表于 2010-3-9 16:34:59 | 只看该作者
方法不错,但是在维护的PE中确实用处不大......
回复

使用道具 举报

15#
发表于 2010-3-9 16:35:24 | 只看该作者
原帖由 NicTense 于 2010-3-9 16:05 发表


你的sysdm.cpl 显示这2行信息的地方设置得短了点,看样子应该是100左右,信息没显示完

最好设长一点,200-220就差不多了


----------------------

180也够的.


回复

使用道具 举报

16#
 楼主| 发表于 2010-3-9 16:42:38 | 只看该作者
原帖由 azhong123456 于 2010-3-9 16:31 发表

能否上传一个改好的SYSDM.CPL的文件给我


sysdm.rar (81.08 KB, 下载次数: 264)

如果版本不同,可能用不了的
回复

使用道具 举报

17#
发表于 2010-3-9 16:49:06 | 只看该作者
谢谢,可以了,我想问下如果那个CPUZ.EXE文件外置要怎 么设

12.png (208.49 KB, 下载次数: 109)

12.png
回复

使用道具 举报

18#
发表于 2010-3-9 16:50:09 | 只看该作者
这样方便啊,向楼主学习。
回复

使用道具 举报

19#
 楼主| 发表于 2010-3-9 16:50:58 | 只看该作者
原帖由 azhong123456 于 2010-3-9 16:49 发表
谢谢,可以了,我想问下如果那个CPUZ.EXE文件外置要怎 么设


一样的,改一下批处理中cpuz的路径,就是红色部分

另外pecmd.ini中的那行改在外置挂载后以后执行,即改在 挂载外置程序的ini里执行,且必须完成挂载后
回复

使用道具 举报

20#
发表于 2010-3-9 16:52:33 | 只看该作者
不错,找个时间我也加上去
回复

使用道具 举报

21#
发表于 2010-3-9 16:58:57 | 只看该作者

回复 #19 NicTense 的帖子

多谢指点,终可以在外置上使用
回复

使用道具 举报

22#
发表于 2010-3-9 17:58:44 | 只看该作者
很少用CPU-Z......
回复

使用道具 举报

23#
发表于 2010-3-9 18:20:31 | 只看该作者
原帖由 66369 于 2010-3-9 16:35 发表


----------------------

180也够的.


83942



T3H
给个看看
回复

使用道具 举报

24#
发表于 2010-3-9 19:11:59 | 只看该作者
我发现 天使兄 真的很聪明!呵呵,好东西!
回复

使用道具 举报

25#
发表于 2010-3-9 19:15:25 | 只看该作者
看似不錯 呵呵
用處不大
回复

使用道具 举报

26#
发表于 2010-3-9 20:47:54 | 只看该作者
SYSDM.CPL

目前版内能正常显示CPU完全信息的.基本没有.要修改下.
回复

使用道具 举报

27#
发表于 2010-3-9 20:55:13 | 只看该作者
24#  你TMD 直接复制我的回复, 太明目张胆了!
回复

使用道具 举报

28#
发表于 2010-3-9 20:56:56 | 只看该作者

回复 #26 66369 的帖子

水的多功能怎 么加进去,特别是外置我一直加不上,全内置我的就加了。
回复

使用道具 举报

29#
发表于 2010-3-9 21:52:56 | 只看该作者
原帖由 azhong123456 于 2010-3-9 20:56 发表
水的多功能怎 么加进去,特别是外置我一直加不上,全内置我的就加了。





明年更新.肯定加上.方便查看.
回复

使用道具 举报

30#
发表于 2010-3-9 22:04:54 | 只看该作者
楼主上次进行了这方面调查,原来目的在这里,开创PE识别计算机型号和CPU的先河。明白了调查目的。把编程运用得随心所欲,真是聪明极了。
这些源代码怎样看呢?有没有教材?我现在看不懂。

[ 本帖最后由 964220 于 2010-3-9 22:13 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 18:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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