PE也能实现主题啦




如何在WinPE中启用XP的主题一直是个难题,网上搜一搜,没有答案。

XPE Plugin的作者Sherpya做了不少工作,但最后也说:Until themes are not working these files are only wasting space。没办法,自己努力吧。

  有许多兄弟们都想要一个现成的,不过我更喜欢授人以渔,因为有好多人制作出来的PE比我的好多了,有哪位兄弟先做出来,让我也下载一个。

  先说原理,如果你看不懂,那就和我一块等着下载别人的吧!!!!!

  Winlogon启动后先初始化一些全局变量,检测HKEY_LOCAL_MACHINE\SYSTEM\Setup下的SystemSetupInProgress是否为零,如果是正常启动,如果为1,则在启动系统服务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,查找
56E8151D000056FF7614E8FC,修改为56E8151D000056E8BC91FFFF(看清了,只修改最后五位);打开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。特别注意要修改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路径指向你自己的图片。



常见问题:

最新文章:
    懦弱的孤独者0
    2019/5/28
    电脑移动硬盘U盘内存卡提示未被格式化怎么恢复数据
    记忆是盛开满纸的荒凉0
    2019/5/28
    不小心买了个垃圾u盘结果损坏了文件,用了3个月就提示U盘格式化,找了好多地方都没人搞,要不就是要价很高。看了评论说好选了u盘恢复软件真的很给力!
    奇葩硬汉 奇葩臂妹0
    2019/5/28
    我是移动Upan坏了,u盘恢复软件做数据恢复,Upan是1T的西部数据的,大概用了301G的内存,里面都是课件和一些重要的资料,数据都全部完好的恢复过来了,谢谢拯救。
    詮釋謧莂旳傷痛つ0
    2019/5/28
    这次去外地拍了很重要的一组图片故事,误删除了五分之四,当时很好捉急,幸好有U盘中毒文件修复,说实话,百分百恢复出来了。
    绿妒轻裙0
    2019/5/28
    我是移动Upan坏了,u盘恢复软件做数据恢复,Upan是1T的西部数据的,大概用了301G的内存,里面都是课件和一些重要的资料,数据都全部完好的恢复过来了,谢谢拯救。
    记忆是盛开满纸的荒凉0
    2019/5/28
    不错,修复好,恢复的数据除了硬盘破碎的没法恢复,其它都不错
    醉 纸鸢0
    2019/5/28
    有计划买surface pro 的小伙伴,强烈不推荐购买! 刚用上十天,已经两次打电话找售后了,一次远程操作解决,这次只能自己跑去服务站点检测。 售后提供三个解决方法: 1、自己修,找其他的电脑,下载他们提供的系统重装,还必须找U盘,必须是17G的,必须U盘格式化才能用! 然后再插到这个电脑上,经过一系列一系列的操作! 我是电脑小白,我是不会操作!
    真心英雄0
    2019/5/28
    还不错,重装系统大意,选错盘,然后那盘就什么都没了,找到u盘恢复软件,价格不错,想要的东西都恢复了。
    最后的温柔。0
    2019/5/28
    U盘突然出现写保护了,只能看以前存下的东西,不能删除也不能格式化。求救,该怎么处理???
    最后的温柔。0
    2019/5/28
    u盘恢复软件确实很厉害,重装系统的憨批不给我备份就把我电脑的图片都搞没了,不过能找回来就很好了。
    细品岁月0
    2019/5/28
    u盘恢复软件把我u盘里丢失的数据全部找回来了!真是当时急的我直冒汗,个人损失是小,工作资料全丢了可是得赔上我后半年的老命去干,再次感谢,只想表达我的数据都回来了。。
    文芷文艺范0
    2019/5/28
    u盘恢复软件不错的技术,还有很热情的服务,不小心把U盘里的数据给那啥了,幸亏有软件的帮忙,得以恢复数据安下心来。
为何选择U盘杀毒专家

全面查杀+主动防御=安全
专杀主流软件不能解决的U盘病毒
努力查杀任何一个新出现的U盘病毒
提供完善售后技术服务
清新界面,简单的步骤适合每个用户
针对不同需求,制定不同版本


U盘专杀 用户指南 联系我们 友情链接 友情链接 模版下载

版权所有 Copyright©2002-2019 U盘杀毒专家-蚂蚁传媒。