无忧启动论坛

标题: 实现 WinXPPE 默认主题的详细方法----为 PE 添彩(2011-06-20) [打印本页]

作者: 静庵    时间: 2010-12-1 21:54
标题: 实现 WinXPPE 默认主题的详细方法----为 PE 添彩(2011-06-20)
实现 WinXPPE 默认主题的详细方法----为 PE 添彩(2011-06-20)

    本人喜欢多功能的 PE,尤其认为仿系统的PE。比如老九、天意、如水、玄天等大师级作品,每款必试用、修改、并收藏。久之,对无主题的界面不喜欢了。在看到玄天的PE3(新版)已经自动加载了主题,并论坛中相关的XPE主题的帖子,均是极其心弦的。
    但问题是:根据帖子中说到的XPE加载主题的方法,可以实现启动后的XP标准主题的切换,但总是不能自启动。---理论上自启动完全可行(需要添加的 M 不多),但需要的DLL文件、注册表的修改等,目前论坛中说的都不是很清楚(大师们一带而过,概而言之)。所以,本人总结了一下,可以实现自动加载的默认主题,以和大家分享。
    高手略过了。
    下面我详细介绍实现 XP 默认主题的过程:
    一、先说原理。
    参照 yamingw 大师的帖子(http://bbs.wuyou.net/forum.php?mod=viewthread&tid=138825&highlight=themes),也就是下面的
内容:
   Winlogon启动后先初始化一些全局变量,检测HKEY_LOCAL_MACHINE\SYSTEM\Setup下的SystemSetupInProgress是否为零,
如果是正常启动,如果为一,则在启动系统服务SamSs时告诉它不要管SAM数据库,启动一些必要的服务后,比如Services,
lsass,然后就启动HKEY_LOCAL_MACHINE\SYSTEM\Setup下由CMDline指定的程序,等待程序结束,重启或者关机。
如果 SystemSetupInProgress == 1,则初始化系统服务后调用MSgina.DLL登录XP。
   .....
我告诉你:“我们可以改一改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。
    这样有点....
    yamingw 大师进一步总结如下:


    启用 Themes 需要以下文件:修改版的 Winlogon 调用 Msgina.Dll 或直接修改 MinLogon(XPE Feathure Pack 2007 中有此文件),
Shsvcs.dll,Activeds.dll,icaapi.dll,mstlsapi.dll,ntlsapi.dll,termsrv.dll,uxtheme.dll,themeui.dll,sxs.dll
WinSxS文件夹下其实只需要

C:\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
GDIplus我的是5581,你可根据你机器上的提取相应Manifest和Dll文件
x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.5581_x-ww_dfbc4fc4


    yamingw 大师的上述方法确实可以实现主题服务的开启,甚至可以手动加载 默认主题---不信你试一试....
    可是要实现开机自动加载,还不行。

    我仔细分析了 Windows NT5.x 的启动过程,发现:Winlogon 检测 SystemSetupInProgress == 1、初始化系统服务后并不是直接调用 MSgina.DLL,而要检查 System 相关设置(桌面"特征"),然后再登录 XP。
    不知为什么,许多 PE 都设置了 System 项内容,也不知有什么实际作用。

   简单了---屏蔽 System 设置,或者干脆不要 System 设置。恰恰这个细节就可以实现自动加载主题。


二、 具体设置

    1. 添加上述需要的文件和修改。

    2. 将 XP Windows 目录中的 “Resources”和“Web”文件夹添加到 PE的“WXPE”中。 文件夹结构如下:
       Resources\themes\luna
                       \Windows Classic.theme
                       \Luna.theme
       Web\Wallpaper\Bliss.bmp

    3. 删除注册表 Default\Software\Microsoft\Windows\CurrentVersion\Policies 下的“System”项。

    4. 将 SETUPREG.HIV\ControlSet001\Services\Themes 下“Start”DWORD值 改为“2”。

    至此,应该可以了,不信你试一试。


三、 Windows 7 PE 的主体实现更简单一些,调用 yamingw 大师的 “UI.EXE” 即可,当然你要添加相关的文件和设置
    --玄天老师是专家。

四、 Win 2003 PE,由于正常系统本身就不是自动加载主题,即便是按照上述 yamingw 大师的的方法,也不成功。你可以试试。

   
     以上都是在坛中学到的,并非本人之功,要感谢各位大师们,尤其要感谢 yamingw 大师。

[ 本帖最后由 2010jingan 于 2011-7-5 21:33 编辑 ]
作者: 静庵    时间: 2011-6-20 12:45
2011-06-20 编辑

   记得很早就发过相关的图片,可是“无人问津”,我也就没再具体说过,近日发现几个坛友询问主题的事,所以与大家分享一下,
让大师们见笑了。
   其实,XPPE 加载主题 也就增加 2-3 m 内容,但界面就不一样了。加不加主题,纯属个人喜好。

[ 本帖最后由 2010jingan 于 2011-6-20 21:14 编辑 ]
作者: notepad    时间: 2011-6-20 21:14
不搞现成的文件下载吗?
作者: 2011emu    时间: 2011-6-20 21:22
晕啊,我正在研究,一刷新,没啦!!!
作者: 2011xiaobing    时间: 2011-6-20 22:40
楼主是曲高和寡,现在伸手党多,有句话好像要这样说:授人以渔,不如授人以鱼。
还是发出来吧,好东西大家都会支持的!
作者: sm7810226    时间: 2011-6-20 22:47
楼主  我才看到呢  怎么删了  放出来吧  有人喜欢的
作者: 潮退潮生    时间: 2011-6-20 23:54
精华帖里有一篇,能实现很久了
作者: 2011aaaaaa    时间: 2011-6-23 10:48
别删啊,我还想看看呢
作者: dengxiong    时间: 2011-7-5 17:46
兄台为什么要删了呢?

能不能再说出来如何做的呀?
作者: 潮退潮生    时间: 2011-7-5 20:32
我的空间整理了一篇,比较系统的了,也是我自己亲手试过能在SP3中实现的。
作者: 静庵    时间: 2011-7-5 21:21
原帖由 dengxiong 于 2011-7-5 17:46 发表
兄台为什么要删了呢?

能不能再说出来如何做的呀?



   有些不妥,对不住各位!

   其实,2 年前我就发过关于实现 自启动XP主题的图片,和无主题的桌面相比当然是漂亮了,大家看看对比一下:玄天的 PE3 和某些小体积的 PE3 的桌面,尤其是开始菜单,其效果相等吗?显而易见,加载主题就是“好看吗”。

   就 XPE 的主题而言,多年来,也有多少 PE 大师们研究,但多也失败之----主要原因就是主题的服务不能启动,包括 XPE Plugin 的作者 Sherpya 通过不少时间的“琢磨”,也都认为“实在是困难”。

   但是,“功”于“摸”出,yamingw  大师解决了。他在“原创:如何在PE中启用 Themes”(地址 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=138825)中详细论述了原理,并介绍了详细的方法--包括文件修改。我认为这是对PE的一大贡献,光彩了 PE。并且 yamingw  大师 也就 Win 7 PE(所谓的PE3)如何实现主题?如何在 PE 中实现 即插即用 等高技术工作上,给出了极大的贡献。

   不仅如此,yamingw  大师不骄不傲,从不自诩,从不夸口,当然更无粗口。我不知道 yamingw 作何职业?或几多年龄?我“当真”愿意尊称 yamingw 为“大师”----起码称得起 PE 界得大师。也为此,与那些动不动拿(或者是“抄”)别人的的东西而自誉为什么“原创”,堂皇地成为“我的 xxx 版”者,不“较”而“别”。

   应该说实现主题,也是对 PE 的美化,没甚么不好的,正像 “潮退潮生(兵临城下) ”征集 PE 资料一样,我认为是“利民”之事。

   但是,  yamingw  大师早在 2009年就发表了 XPE 实现的方法,可是直到现在响应者无多,甚至/似乎是认为“不屑”,仍“出品”许多无主题的 XPE,我不可理解,因而“删除”了内容,望多见谅。

   重新放上资料。-----再次声明:非我所创,仅稍有改作,纯属个人喜好。

[ 本帖最后由 2010jingan 于 2011-7-5 21:38 编辑 ]
作者: sm7810226    时间: 2011-7-5 22:01
yamingw  大师早在 2009年就发表了 XPE 实现的方法,可是直到现在响应者无多,甚至/似乎是认为“不屑”,仍“出品”许多无主题的 XPE,我不可理解

看了楼主这段话感受颇多啊!说实话,我也不理解!
作者: 静庵    时间: 2011-7-5 22:26
原帖由 sm7810226 于 2011-7-5 22:01 发表
yamingw  大师早在 2009年就发表了 XPE 实现的方法,可是直到现在响应者无多,甚至/似乎是认为“不屑”,仍“出品”许多无主题的 XPE,我不可理解

看了楼主这段话感受颇多啊!说实话,我也不理解!



   也算我无聊,发几幅图片,咱们比比:

Theme-XP-1.JPG (84.57 KB, 下载次数: 81)

Theme-XP-1.JPG

NoTheme-1.JPG (72.39 KB, 下载次数: 86)

NoTheme-1.JPG

作者: sm7810226    时间: 2011-7-5 22:43
原帖由 2010jingan 于 2011-7-5 22:26 发表



   也算我无聊,发几幅图片,咱们比比:


你理解错我的意思了  我还跟帖和你要方法呢!!
作者: 静庵    时间: 2011-7-5 22:45
标题: 回复 #13 2010jingan 的帖子
再发一张图片----启动开始,如果出现这个东西,那就放心吧,主题有了。

Start.JPG (15.71 KB, 下载次数: 76)

Start.JPG

作者: sm7810226    时间: 2011-7-5 22:50
原帖由 2010jingan 于 2011-7-5 22:45 发表
再发一张图片----启动开始,如果出现这个东西,那就放心吧,主题有了。


有请稍后那图片看着不爽 可以去掉的在MSGINA.DLL的对话框里面  现在记不起来了 大家自己找找看吧  我是去掉了
反正好看多了

[ 本帖最后由 sm7810226 于 2011-7-5 22:55 编辑 ]
作者: 静庵    时间: 2011-7-5 22:52
原帖由 sm7810226 于 2011-7-5 22:43 发表


你理解错我的意思了  我还跟帖和你要方法呢!!



你不要误会,我没有冲你,知识顺着你的帖子说(体己)。
作者: sm7810226    时间: 2011-7-5 22:55
哦 这样就好 O(∩_∩)O谢谢你提供了这些方法  我也下你改好的研究了下  你改的很好!
作者: 无垠    时间: 2013-8-7 11:22
这个不好说,罗卜青菜。追求美化者有之,追求简洁实用者有之,各有所爱,无需争论,各具特色!
作者: NicTense    时间: 2013-8-7 12:48
其实不需要理会别人的不屑的
虽然我也不认为需要在pe里添加主题支持,正如我也不会用pe来上网,因为我觉得那样不如用Linux
但这不等于别人不需要,每个人都有自己的喜好,有自己的需求
所有的分享,首先都是从自己的喜好出发的,做自己的就好了,管别人怎么看

作者: 20121adgjmptw    时间: 2013-8-7 13:35
一直想找教程,没想到踏破铁鞋无觅处




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3