无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 35739|回复: 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 原创内容

查看全部评分

220#
发表于 2024-7-19 19:44:45 | 只看该作者
真是高手呀,什么样的办法都能想出来!
回复

使用道具 举报

219#
发表于 2010-4-27 19:03:40 | 只看该作者
原帖由 slore 于 2010-4-27 12:17 发表
找到不显示CPU信息的原因了吗?


可能是我的电脑太老了,是赛扬733M的,换了另一台电脑又行了,只不过多了一个逗号。
我用的是H3的PE,只启动纯内核时没有这个逗号,加载了网络组件后,就有这个逗号了。


回复

使用道具 举报

218#
发表于 2010-4-27 12:17:52 | 只看该作者
找到不显示CPU信息的原因了吗?


那个字符串应该是在,你也可以尝试我提出的修改sysdm.cpl的方法。
回复

使用道具 举报

217#
发表于 2010-4-26 20:07:43 | 只看该作者
原帖由 网虫2008 于 2010-4-18 10:56 发表


字符串的ID是 864

13812,  "%s, %s"
改为
13812,  "%s %s"
就不显示逗号了


我也有这个逗号,但用Exescope打开了2003 Sp2的Sysdm.cpl,没发现ID是864的字符串呀。能不能传一个Sysdm.cpl上来?谢谢。
回复

使用道具 举报

216#
发表于 2010-4-24 11:57:38 | 只看该作者
不修改的话绝大多数的PE本来就不显示的。如果放原版的进去就显示了,这个帖子也就没什么用啊。
回复

使用道具 举报

215#
发表于 2010-4-24 08:14:54 | 只看该作者
我把Xp_sp2系统里的Sysdm.cpl放在PE里也不行,不知何故。
回复

使用道具 举报

214#
 楼主| 发表于 2010-4-23 23:45:13 | 只看该作者
原帖由 chujiafu 于 2010-4-23 23:33 发表
可能就是这个Sysdm.cpl的问题了。
天使大哥,能不能传一个XP_sp2PE的Sysdm.cpl?


我又不用sp2的pe,也不用sp2的系统,你可以直接从xp sp2系统里取文件,如果那个也不行,就不关文件的事了

slore不是说丢到tangope里可以用吗,如果是这样,问题应该不在这个文件里

sysdm.cpl这个文件对版本好像没什么要求,把xp的丢到2003pe,或者反过来好像也能用
回复

使用道具 举报

213#
发表于 2010-4-23 23:33:36 | 只看该作者
可能就是这个Sysdm.cpl的问题了。
天使大哥,能不能传一个XP_sp2PE的Sysdm.cpl?
回复

使用道具 举报

212#
 楼主| 发表于 2010-4-23 23:28:01 | 只看该作者
原帖由 chujiafu 于 2010-4-23 23:24 发表
经过一个一个地比对,发现少了Tdll.dll这个文件,但XP_Sp2的系统里没有这个文件呀。


上面说了,这个是写错了,应该是ntdll.dll,不过不可能缺这个的

如果是这样的话,文件应该没少,估计是你的注册表有问题了,具体就不清楚了
回复

使用道具 举报

211#
发表于 2010-4-23 23:24:15 | 只看该作者
经过一个一个地比对,发现少了Tdll.dll这个文件,但XP_Sp2的系统里没有这个文件呀。
回复

使用道具 举报

210#
发表于 2010-4-23 23:20:46 | 只看该作者
谁能上传个2003 server的sysdm.cpl 啊?
回复

使用道具 举报

209#
 楼主| 发表于 2010-4-23 23:13:57 | 只看该作者
原帖由 chujiafu 于 2010-4-23 23:09 发表



你的这个P处理估计有问题呀,这是我用Cmd后的图,里面竟然还有Shell32.dll
87887


你丢错目录了吧,看贴看仔细阿

不过原来那个tdll.dll错了,少了一个n,应该是ntdll.dll,或者直接删掉这个,因为这个应该是铁定在的

我只是把跟sysdm.cpl有关的必须保留的文件列出来,很多是铁定存在的

[ 本帖最后由 NicTense 于 2010-4-23 23:18 编辑 ]
回复

使用道具 举报

208#
发表于 2010-4-23 23:09:42 | 只看该作者
原帖由 NicTense 于 2010-4-23 22:41 发表


建一个.cmd文件,名字随便,丢到你的pe的wxpe目录下,执行它,代码如下
for %%a in (msvcrt.dll tdll.dll USER32.dll GDI32.dll ole32.dll OLEAUT32.dll COMCTL32.dll KERNEL32.dll ADVAPI32.dll SHELL32 ...



你的这个P处理估计有问题呀,这是我用Cmd后的图,里面竟然还有Shell32.dll
回复

使用道具 举报

207#
 楼主| 发表于 2010-4-23 22:41:07 | 只看该作者
原帖由 chujiafu 于 2010-4-23 22:24 发表
还是不知道缺少哪个文件呀,我用的是H3的PE,20091224版本的。


建一个.cmd文件,名字随便,丢到你的pe的wxpe目录下,执行它,代码如下

  1. for %%a in (msvcrt.dll ntdll.dll USER32.dll GDI32.dll ole32.dll OLEAUT32.dll COMCTL32.dll KERNEL32.dll ADVAPI32.dll SHELL32.dll SHLWAPI.dll USERENV.dll RPCRT4.dll IMM32.dll VERSION.dll comdlg32.dll USP10.dll IMAGEHLP.dll SETUPAPI.dll) do if not exist system32\%%a echo %%a & echo %%a>>notexist.txt
复制代码
显示在屏幕的,或者打开notexist.txt文件,里面列出的就是少了的

估计是USP10.dll

[ 本帖最后由 NicTense 于 2010-4-23 23:17 编辑 ]
回复

使用道具 举报

206#
发表于 2010-4-23 22:31:15 | 只看该作者
上面也有03的PE成功的,你把内核的文件列表对比下看多什么了。
我手头没有其他版本的PE。
回复

使用道具 举报

205#
发表于 2010-4-23 22:24:09 | 只看该作者
还是不知道缺少哪个文件呀,我用的是H3的PE,20091224版本的。
回复

使用道具 举报

204#
 楼主| 发表于 2010-4-23 21:53:25 | 只看该作者
原帖由 slore 于 2010-4-23 21:49 发表



我把你的这个文件拖进TangoPE下可以显示


应该和PE的文件还是有关系的


如果是这样,应该是少了某个文件

有些pe内核的文件很不科学,没用的一大堆,有用的又不齐
回复

使用道具 举报

203#
发表于 2010-4-23 21:49:42 | 只看该作者
原帖由 chujiafu 于 2010-4-23 18:41 发表
试了下,没成功。
采用的是第一种方案,我的PE是XP Sp2的,已经用UE把CC 8B FF 55 8B EC 81 EC 24 04 00 00 83 7D 18 00中的最后一个00改成了02.
附件是改后的Sysdm.cpl。

87878

87879

87880



我把你的这个文件拖进TangoPE下可以显示


应该和PE的文件还是有关系的

2.JPG (25.55 KB, 下载次数: 103)

2.JPG
回复

使用道具 举报

202#
发表于 2010-4-23 20:08:01 | 只看该作者
在PE2003中也不行,用的是H3的20091224版本的。
回复

使用道具 举报

201#
发表于 2010-4-23 18:41:02 | 只看该作者
试了下,没成功。
采用的是第一种方案,我的PE是XP Sp2的,已经用UE把CC 8B FF 55 8B EC 81 EC 24 04 00 00 83 7D 18 00中的最后一个00改成了02.
附件是改后的Sysdm.cpl。

xp_sp2_SYSDM.rar (89.22 KB, 下载次数: 26)





[ 本帖最后由 chujiafu 于 2010-4-23 19:32 编辑 ]
回复

使用道具 举报

200#
发表于 2010-4-19 12:09:59 | 只看该作者
方案一:此方案为slore原创,由于帖子被合并了,所以在这里一并列出

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

还以为不能显示内存大小呢,这种传统界面也只能折行显示了
回复

使用道具 举报

199#
发表于 2010-4-18 17:10:17 | 只看该作者
哪位大大能告诉我 注册表里 内存和硬盘信息在那看 我网上搜了半天 都没结果
回复

使用道具 举报

198#
 楼主| 发表于 2010-4-18 15:52:26 | 只看该作者
原帖由 slore 于 2010-4-18 15:48 发表
MS的东西就是比较。。。其实把这个字符串放到sysdm.cpl也不大,凸显重用性?


主要改字节码的话,只要改一个文件,方便些。


微软设计的时候不会考虑像我们这样吧pe分解得乱七八糟的,默认做出来的200多M的PE还是残废的

他们才不管你用多少个文件,对他们来说没区别
回复

使用道具 举报

197#
发表于 2010-4-18 15:48:43 | 只看该作者
MS的东西就是比较。。。其实把这个字符串放到sysdm.cpl也不大,凸显重用性?


主要改字节码的话,只要改一个文件,方便些。
回复

使用道具 举报

196#
发表于 2010-4-18 14:07:28 | 只看该作者
原帖由 NicTense 于 2010-4-18 13:52 发表


你得把上面那行改长点,显示成2行不好看


我用的是第二方案,只修改了SYSDM.CPL的ASCII,如要弄成显示一行,有点麻烦,就先二行吧。
回复

使用道具 举报

195#
 楼主| 发表于 2010-4-18 13:52:39 | 只看该作者
原帖由 网虫2008 于 2010-4-18 13:48 发表


-_- 是呀是呀,,这方法更简单了,
我顺手把SYSDM.CPL的字符串也改了,把
5,  " %s 的内存"
改成
5,  " 物理内存: %s"


你得把上面那行改长点,显示成2行不好看
回复

使用道具 举报

194#
发表于 2010-4-18 13:48:49 | 只看该作者
原帖由 NicTense 于 2010-4-18 13:00 发表


哈哈,最简单的修改方法竟然都被忽略了,由于我的xpsp2reg.dll精简掉了,没看到逗号,也没去注意字符串是什么

修改这个更简单


-_- 是呀是呀,,这方法更简单了,
我顺手把SYSDM.CPL的字符串也改了,把
5,  " %s 的内存"
改成
5,  " 物理内存: %s"

硬件信息.png (5.97 KB, 下载次数: 84)

硬件信息.png
回复

使用道具 举报

193#
 楼主| 发表于 2010-4-18 13:00:12 | 只看该作者
原帖由 网虫2008 于 2010-4-18 10:56 发表


字符串的ID是 864

13812,  "%s, %s"
改为
13812,  "%s %s"
就不显示逗号了


哈哈,最简单的修改方法竟然都被忽略了,由于我的xpsp2reg.dll精简掉了,没看到逗号,也没去注意字符串是什么

修改这个更简单
回复

使用道具 举报

192#
发表于 2010-4-18 10:56:32 | 只看该作者
原帖由 slore 于 2010-3-27 19:15 发表

QUOTE:
原帖由 mapeimapei 于 2010-3-24 11:57 发表
今天有空测试第一种方案

现在cpu下面有一个小逗号  不知道是什么原因


看了下2K3下面也是xpsp2res.dll
忘了ID是多少=。=字符串是%s , %s
你看看就是了,修改这个格式就好了。
强制不显示这个格式:
E8 24 F5 FF FF 39 5D 14 74 58 57 8D 85 F4 FD FF FF

E8 24 F5 FF FF 39 5D 14 EB 58 57 8D 85 F4 FD FF FF
缺点是如果哪天能获得频率了依然只显示内存。
如果能显示频率了这个逗号也就不用删除了。


字符串的ID是 864

13812,  "%s, %s"
改为
13812,  "%s %s"
就不显示逗号了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-25 11:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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