PE下桌面主题使用技巧解读
发布时间:2014-04-01 14:59:23 作者:佚名 我要评论
windows下更换主题相信大家都会,但在PE下使用桌面主题对大家来说,或许就有点难度了,下面为大家介绍个小技巧,大家可以参考下
在正常windows下更换主题相信大家也会了,但在PE下使用桌面主题大家应该就没见过吧。下面一起来操作一下吧。
先看看原理:Winlogon启动后先初始化一些全局变量,检测HKEY_LOCAL_MACHINESYSTEMSetup下的SystemSetupInProgress是否为零,如果是正常启动,如果为1,则在启动系统服务SamSs时告诉它不要管SAM数据库,启动一些必要的服务后,比如Services,lsass,然后就启动HKEY_LOCAL_MACHINESYSTEMSetup下由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:WindowsWinSxSManifests以C:WindowsWinSxSPolicies中的规则来调用相应的文件。
———————————————————————————————————————————————————
动手了:
1、启用Themes需要以下文件:修改版的Winlogon调用Msgina.Dll或直接修改MinLogon(XPE Feathure Pack 2007 中有此文件),Winlogon,Msgina.dll,Shsvcs.dll,Activeds.dll,,uxtheme.dll,themeui.dll,sxs.dllC:WindowsWinSxSManifests文件夹中的(对应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:WindowsWinSxSPoliciesx86_policy.6.0.Microsoft.Windows.Common-Controls_6595b64144ccf1df_x-ww_5ddad775
文件夹下的
6.0.2600.5512.cat
6.0.2600.5512.Policy
C:WindowsWinSxSx86_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的注册表,在SYSTEMSetup下比照着SystemSetupInProgress新建一个REG_DWORD值SystemSetupInProgrest,设为0。特别注意要修改services.exe中的SystemSetupInProgress为SystemSetupInProgrest。
同时测试了基于bartpe的xpe硬盘版,因为xpe使用自己的pegina.dll重新进入sas序列,所以无法启用主题。
———————————————————————————————————————————————————
上传一个修改过的Minlogon,切记修改注册表。对了,最重要的是别忘了加上你自己的主题文件,它们一般在WindowsResources文件夹下。传了一个压缩的,是用我心如水的PE做的(hhh333的也不错,不过他的是SP2的,测试不方便),我重新上传一个精简过文件的IS_文件,可直接替换我心如水里面的winpe.is_
1、修改的注册表,添加了一些键值,比如对DX8游戏的支持;
2、修改为支持双核,理论上能在P4以上单核上启动;
3、自动检测硬件,安装驱动。(必须有相应的INF和驱动文件)
今天上传了一个自己用的Img格式的内核,根据站长的研究使主题自动开启。其中添加了VC2005的运行库,内置NV显示驱动,配合外置的DX9可以玩现在的新游戏了。
有一个小问题,墙纸不能自动加载是因为Windows只认bmp格式的图片,jpg格式的要转换成bmp。把你需要的墙纸转换成bmp,然后再修改HKEY_CURRENT_USERControl PanelDesktop下的WallPaper路径指向你自己的图片。
先看看原理:Winlogon启动后先初始化一些全局变量,检测HKEY_LOCAL_MACHINESYSTEMSetup下的SystemSetupInProgress是否为零,如果是正常启动,如果为1,则在启动系统服务SamSs时告诉它不要管SAM数据库,启动一些必要的服务后,比如Services,lsass,然后就启动HKEY_LOCAL_MACHINESYSTEMSetup下由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:WindowsWinSxSManifests以C:WindowsWinSxSPolicies中的规则来调用相应的文件。
———————————————————————————————————————————————————
动手了:
1、启用Themes需要以下文件:修改版的Winlogon调用Msgina.Dll或直接修改MinLogon(XPE Feathure Pack 2007 中有此文件),Winlogon,Msgina.dll,Shsvcs.dll,Activeds.dll,,uxtheme.dll,themeui.dll,sxs.dllC:WindowsWinSxSManifests文件夹中的(对应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:WindowsWinSxSPoliciesx86_policy.6.0.Microsoft.Windows.Common-Controls_6595b64144ccf1df_x-ww_5ddad775
文件夹下的
6.0.2600.5512.cat
6.0.2600.5512.Policy
C:WindowsWinSxSx86_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的注册表,在SYSTEMSetup下比照着SystemSetupInProgress新建一个REG_DWORD值SystemSetupInProgrest,设为0。特别注意要修改services.exe中的SystemSetupInProgress为SystemSetupInProgrest。
同时测试了基于bartpe的xpe硬盘版,因为xpe使用自己的pegina.dll重新进入sas序列,所以无法启用主题。
———————————————————————————————————————————————————
上传一个修改过的Minlogon,切记修改注册表。对了,最重要的是别忘了加上你自己的主题文件,它们一般在WindowsResources文件夹下。传了一个压缩的,是用我心如水的PE做的(hhh333的也不错,不过他的是SP2的,测试不方便),我重新上传一个精简过文件的IS_文件,可直接替换我心如水里面的winpe.is_
1、修改的注册表,添加了一些键值,比如对DX8游戏的支持;
2、修改为支持双核,理论上能在P4以上单核上启动;
3、自动检测硬件,安装驱动。(必须有相应的INF和驱动文件)
今天上传了一个自己用的Img格式的内核,根据站长的研究使主题自动开启。其中添加了VC2005的运行库,内置NV显示驱动,配合外置的DX9可以玩现在的新游戏了。
有一个小问题,墙纸不能自动加载是因为Windows只认bmp格式的图片,jpg格式的要转换成bmp。把你需要的墙纸转换成bmp,然后再修改HKEY_CURRENT_USERControl PanelDesktop下的WallPaper路径指向你自己的图片。
相关文章
- 用户都是个性的,在满足功能需求的前提下。越来越多的用户开始选择为软件更换主题皮肤2012-08-09
- 非常漂亮的主题2012-07-13
Project Hera Launcher Theme(多桌面主题图标包) v2.03 安卓版
Project Hera Launcher Theme是一款根据网上最新泄露出来的android新版图标设计出来的多桌面主题图标包2016-03-21Banx(桌面主题) for android v1.2.3 安卓版
Banx桌面主题工具是一款手机桌面的主题工具。这款叫做Banx的主题不管是从图标设计还是壁纸的选择整体质量都很高,感觉不错2014-03-04IOS7桌面主题 for Android v0.0.17 安卓版
在涡轮启动器,当你按下一个应用程序的图标,打开一个对话框,您可以选择“编辑”。你可以改变一个应用程序的名称和图标上按一下,改变。2014-02-18- 超萌猫咪壁纸来啰,把可爱小猫们统统抱回家2014-01-10
360桌面主题爱情树 for Android v2.0 安卓版
爱情树是360手机桌面为您量身定制的主题类应用,让你的桌面随心定制。2014-01-02安卓桌面 for android v3.2 安卓版 支持桌面壁纸、桌面主题
《安卓桌面》是一款应用于安卓手机平台的桌面壁纸和主题的手机软件!丰富的桌面内容和多种实用的功能将为你提供一款全新的手机桌面软件2018-03-16- 小编将手机安装的go桌面升级之后,发现功能表中的应用只有四列了,这样导致想要查找一个应用还需要多翻几页才行,那么怎样修改go桌面功能表行列数呢?下面小编来教一下大家2014-06-12
Android L Launcher Theme (安卓 L桌面主题) v1.04 安卓版
Android L Launcher Theme是一款通用主题,支持Nova, Aviate, Apex, Next 3D, TSF Shell, GO, Solo, Smart, ADW, Action, Holo, Atom, Lucid2014-07-08
最新评论