无忧启动论坛

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

原创:如何在PE中启用 Themes

[复制链接]
跳转到指定楼层
#
发表于 2009-3-17 18:01:02 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如何在WinPE中启用XP的主题一直是个难题,网上搜一搜,没有答案。XPE Plugin的作者Sherpya做了不少工作,但最后也说:Until themes are not working these files are only wasting space。没办法,自己努力吧。
        有很多兄弟们都想要一个现成的,不过我更喜欢授人以渔,因为有好多人制作出来的PE比我的好多了,有哪位兄弟先做出来,让我也下载一个。
        先说原理,如果你看不懂,那就和我一块等着下载别人的。
        Winlogon启动后先初始化一些全局变量,检测HKEY_LOCAL_MACHINE\SYSTEM\Setup下的SystemSetupInProgress是否为零,如果是正常启动,如果为一,则在启动系统服务SamSs时告诉它不要管SAM数据库,启动一些必要的服务后,比如Services,lsass,然后就启动HKEY_LOCAL_MACHINE\SYSTEM\Setup下由CMDline指定的程序,等待程序结束,重启或者关机。如果SystemSetupInProgress == 1,则初始化系统服务后调用MSgina.DLL登录XP。MSgina.Dll 在初始化时调用SHsvcs.Dll产生一个ThemesStartEvent系统级事件,代码如下:

#define ThemeWatchForStart_Ordinal 1
#define ThemeWaitForServiceReady_Ordinal 2
typedef DWORD (_stdcall *PFN_ThemeWaitForServiceReady)(DWORD dwTimeout);
typedef BOOL (_stdcall *PFN_ThemeWatchForStart)(void);

HMODULE hShsvcs = LoadLibrary(_T("shsvcs.dll"));
    if( hShsvcs != NULL )
    {
        PFN_ThemeWaitForServiceReady pfThemeWait
            = (PFN_ThemeWaitForServiceReady)GetProcAddress( hShsvcs, (LPCSTR)ThemeWaitForServiceReady_Ordinal);

        PFN_ThemeWatchForStart pfThemeWatch
            = (PFN_ThemeWatchForStart)GetProcAddress( hShsvcs,(LPCSTR)ThemeWatchForStart_Ordinal);

        if(    pfThemeWait != NULL &&
            pfThemeWatch != NULL )
        {
            pfThemeWait(1000);
            pfThemeWatch();
        }
        CloseHandle(hShsvcs);
    }

        那位同学说了:“把SystemSetupInProgress直接改成0不就得了!”
        Lsass告诉你:“此路不通!重启吧你”
        我告诉你:“我们可以改一改Winlogon,让它先启动Msgina或是直接调用Shsvcs就行了。”
        ThemesStartEvent事件是出来了,怎么?还不行!
        那是因为还有个家伙在捣乱:SXS.DLL。他会在系统要求它调用指定Dll时用FusionpAreWeInOSSetupMode函数进行判断SystemSetupInProgress是否为零,如果为1,它就会告诉系统:“我那个什么......先歇会儿再说。”
        然而系统要实现Themes,恰恰需要它去找到合适的ComCtl32.Dll。
        你可以修改它,但是合适的Dll在哪里?
        这种概念是从微软的.NET FrameWork的GAC引入的。每当应用程序要求合适的Dll时,系统会调用SXS.Dll在%SystemRoot%\WinSxS
文件夹中寻找,当有多个相同文件时,它就查看C:\Windows\WinSxS\Manifests以C:\Windows\WinSxS\Policies中的规则来调用相应的文件。
—————————————————————————————————————————————————————————————
        动手了:
        1.启用Themes需要以下文件:修改版的Winlogon调用Msgina.Dll或直接修改MinLogon(XPE Feathure Pack 2007 中有此文件),Winlogon,Msgina.dll,Shsvcs.dll,Activeds.dll,,uxtheme.dll,themeui.dll,sxs.dllC:\Windows\WinSxS\Manifests文件夹中的(对应SP3)
x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.cat
x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.Manifest
C:\Windows\WinSxS\Policies\x86_policy.6.0.Microsoft.Windows.Common-Controls_6595b64144ccf1df_x-ww_5ddad775
文件夹下的
6.0.2600.5512.cat
6.0.2600.5512.Policy
C:\Windows\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83
文件夹下的
comctl32.dll
还有一些Windows文件夹System32下的文件,自己研究吧。(用Depends工具找一找文件的依赖关系)
        2.修改文件。(均已SP3的文件为例)使用UltraEdit打开文件,Winlogon.exe 查找AF46FFFF85C07512,将最后的12改为27,查找
56E8151D000056  FF7614E8FC,修改为56E8151D000056  E8BC91FFFF(看清了,只修改最后五位);打开SXS.Dll查找530079007300740065006d005300650074007500700049006e00500072006f00670072006500可以看到S.e.t.u.p.I.n.p.r.o.g.r.e.s.s的字样,把最后的s改成t,即73改成74。
修改PE的注册表,在SYSTEM\Setup下比照着SystemSetupInProgress新建一个REG_DWORD值SystemSetupInProgrest,设为0。为什么这样,请参照http://bbs.wuyou.net/forum.php?mod=viewthread&tid=125169&highlight=
特别注意要修改services.exe中的SystemSetupInProgress为SystemSetupInProgrest。
同时测试了基于bartpe的xpe硬盘版,因为xpe使用自己的pegina.dll重新进入sas序列,所以无法启用主题。
——————————————————————————————————————————————————————————————————
上传一个修改过的Minlogon,切记修改注册表。

对了,最重要的是别忘了加上你自己的主题文件,它们一般在Windows\Resources文件夹下。
传了一个压缩的,是用我心如水的PE做的,(hhh333的也不错,不过他的是SP2的,测试不方便)
我重新上传一个精简过文件的IS_文件,可直接替换我心如水里面的winpe.is_

1,修改的注册表,添加了一些键值,比如对DX8游戏的支持;
2,修改为支持双核,理论上能在P4以上单核上启动;
3,自动检测硬件,安装驱动。(必须有相应的INF和驱动文件)

今天上传了一个自己用的Img格式的内核,根据站长的研究使主题自动开启。其中添加了VC2005的运行库,内置NV显示驱动,配合外置的DX9可以玩现在的新游戏了。
有一个小问题,墙纸不能自动加载是因为Windows只认bmp格式的图片,jpg格式的要转换成bmp。把你需要的墙纸转换成bmp,然后再修改HKEY_CURRENT_USER\Control Panel\Desktop下的WallPaper路径指向你自己的图片。

http://www.namipan.com/d/themes.im_/103380cd7b73bbc6036b87fb41b21fab0d5dab8c01cffb03

[ 本帖最后由 yamingw 于 2009-7-20 18:51 编辑 ]

minlogon.rar

13.02 KB, 下载次数: 653, 下载积分: 无忧币 -2

146#
发表于 2024-5-16 13:36:00 | 只看该作者
学习中,备用
回复

使用道具 举报

145#
发表于 2024-5-12 17:25:10 | 只看该作者
谢谢分享
回复

使用道具 举报

144#
发表于 2017-10-28 10:55:29 | 只看该作者
liuhj 发表于 2009-7-27 20:09
在基于XPSP3的PE中使用XP标准主题,需要做以下三件事:

第一需要主题文件\WINDOWS\Resources,放到I386\ ...

好像不行,我这个启动不了
回复

使用道具 举报

143#
发表于 2013-2-6 17:17:01 | 只看该作者
再顶,继续收藏。。。
回复

使用道具 举报

142#
发表于 2012-6-24 21:15:09 | 只看该作者
新的技术啊,支持一下,有空再测试一下,我的硬盘挂了。
回复

使用道具 举报

141#
发表于 2012-6-24 20:02:59 | 只看该作者
搞半天。。完全看不懂,唉~~菜菜的我还是等吧~
回复

使用道具 举报

140#
发表于 2012-6-24 17:12:53 | 只看该作者
顶一下老贴,偷学点知识。
回复

使用道具 举报

139#
发表于 2011-7-5 23:15:03 | 只看该作者
今天没有时间来验证这个问题!空了来哈!!!
回复

使用道具 举报

138#
发表于 2011-7-5 13:56:42 | 只看该作者
谢谢这位兄台………………
回复

使用道具 举报

137#
发表于 2011-7-4 20:10:50 | 只看该作者
原帖由 dengxiong 于 2011-7-4 07:42 发表
不知哪位大侠可以上传一个加好主题的小体积的PE呢???


看这:自启动 XP 主题,内置工具和网络,不加载外置完全可以维护、上网。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=193531

http://u.115.com/file/bhimcxee#
WINPE_XP.iso

[ 本帖最后由 2010jingan 于 2011-7-4 20:23 编辑 ]
回复

使用道具 举报

136#
发表于 2011-7-4 07:42:03 | 只看该作者
不知哪位大侠可以上传一个加好主题的小体积的PE呢???
回复

使用道具 举报

135#
发表于 2011-1-31 10:03:56 | 只看该作者

蓝屏!

stop:C000021A UNKNOWN  HARD ERROR
UNKNOWN HARD ERROR
回复

使用道具 举报

134#
发表于 2010-11-25 08:02:47 | 只看该作者
原帖由 lupin1984 于 2009-7-15 23:46 发表
OK了,启动正常,多谢 yamingw 了,先研究一下我心如水的加入theme的问题


可否发一个IS_上来,我的不能自启动。
回复

使用道具 举报

133#
发表于 2010-11-25 07:56:08 | 只看该作者
原帖由 yichya 于 2009-7-11 18:38 发表
经过大量搜索+测试,需要把hkcu\software\microsoft\windows\currentversion\thememanager下面的第一个指向主题文件的一个值修改掉,hklm的也一样,最重要的是,其中有一个是0,一定要改成1,主题就可以自启动了!


我的是可以启动 luna 主题,但就是不能自启动,不知道为什么?
可否赐教!
谢谢!
回复

使用道具 举报

132#
发表于 2010-11-25 07:52:41 | 只看该作者

WinLogon.exe

请教 yamingw
     替换上你的 winlogon.exe 不能启动?
     如何办?
回复

使用道具 举报

131#
发表于 2010-11-20 16:27:02 | 只看该作者
先标记,有时间慢慢看
回复

使用道具 举报

130#
发表于 2010-11-20 15:02:24 | 只看该作者

我心如水 2003 PE 主题

请教 yamingw

  可不可以说明一下:“我心如水SERVER 2003 PE V16.09.11 特别版”中如何实现主题呢?
  我是菜鸟,请具体一些。
  真诚地谢谢!
回复

使用道具 举报

129#
发表于 2010-3-17 14:13:04 | 只看该作者
好强大,不得不佩服,楼主就是我的方向
回复

使用道具 举报

128#
发表于 2010-3-17 14:03:09 | 只看该作者
这个可以在winpe3.0下用吗?
回复

使用道具 举报

127#
发表于 2009-8-12 17:44:20 | 只看该作者
已经制作完成,马上发布。
回复

使用道具 举报

126#
发表于 2009-8-12 17:12:42 | 只看该作者
我遇到了极大的阻力,不过还是初步制作完成,然后就是优化,明天应该可以上传.
回复

使用道具 举报

125#
发表于 2009-8-12 12:18:22 | 只看该作者
现在有时间了,下午做全内核PE。
回复

使用道具 举报

124#
发表于 2009-8-11 23:02:18 | 只看该作者
问题解决了。。。。。。。。
回复

使用道具 举报

123#
发表于 2009-8-10 20:57:26 | 只看该作者
原帖由 yichya 于 2009-8-10 16:50 发表
嘿嘿,跟我的遭遇一样,不过我只是一开始这样.

如果你的主题也是royale的话,我给你个DEFAULT,进内核换掉就可以了,不过这样就别想外置了.因为太难看了.

如果是LUNA或者别的什么,就用REGSHOT截一次,进高级把所 ...

我的主题也是royale的,发个DEFAULT上来吧!谢了
回复

使用道具 举报

122#
发表于 2009-8-10 16:50:36 | 只看该作者
嘿嘿,跟我的遭遇一样,不过我只是一开始这样.

如果你的主题也是royale的话,我给你个DEFAULT,进内核换掉就可以了,不过这样就别想外置了.因为太难看了.

如果是LUNA或者别的什么,就用REGSHOT截一次,进高级把所有的项目调好,再截,得到一个注册表文件,导入内核就可以了.
回复

使用道具 举报

121#
发表于 2009-8-10 12:22:50 | 只看该作者
原帖由 yichya 于 2009-8-10 08:45 发表
没打算外置,看LZ的意思,估计没办法外置.

外置我试过了,是可以用的,但是不能自动启动,要手动启动
回复

使用道具 举报

120#
发表于 2009-8-10 12:21:46 | 只看该作者
原帖由 yichya 于 2009-8-10 08:45 发表
没打算外置,看LZ的意思,估计没办法外置.

我的启动出来标题栏很小,菜单背景色是灰色而不是白色,不知道怎么解决?
回复

使用道具 举报

119#
发表于 2009-8-10 09:24:01 | 只看该作者
明天使一下............
回复

使用道具 举报

118#
发表于 2009-8-10 08:45:37 | 只看该作者
没打算外置,看LZ的意思,估计没办法外置.
回复

使用道具 举报

117#
发表于 2009-8-10 08:44:10 | 只看该作者
原帖由 yichya 于 2009-8-9 17:27 发表
我的已经解决,是多删除了些注册表项,最近赶作业,等几天我做内核吧.

外置问题也解决了吗?另外字体总是显示很小怎么解决?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-28 16:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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