|
ux.rar
(3.97 KB, 下载次数: 1407)
(1)
因为在win7pe中启用主题要比xp中简单的多,所以就和其他的东西合并到一块发帖。
第一个条件:注册表中相应的键值要正确,系统文件不能缺少。比如,win7pe中主题服务不再是shsvcs.dll,而是themeservice.dll;主题的初始化统一由文件uxinit.dll来管理。
第二个条件:修改winlogon.exe在其中查找unicode字符串minint,修改其中任一字母,只要和原先不一样即可,比如,改成minins。
第三个条件:启动主题服务。可以用pecmd的serv命令,也可以修改HKEY_LOCAL_MACHINE\SYSTEM\Setup\AllowStart,在下面建立子键Themes即可。在启动explorer前运行ux.exe,注意运行附件中的文件必须是以修改过的winlogon为前提条件。
原理分析:
当winlogon进行到阶段9的时候会检测pe模式
g_WinlogonStage = 9;
g_fWinPEMode = IsMiniNTMode();
在阶段18后先启动主题,然后运行HKEY_LOCAL_MACHINE\SYSTEM\Setup下的指定的应用程序。
g_WinlogonStage = 18;
if ( !g_fWinPEMode )
{
CSession__SwitchDesktop(2, 0, 0);
ThemesOnWinlogonSetup();
}
v56 = WinLogonSetup(&hKey, (enum _SHUTDOWN_ACTION *)&v59);
附件中的文件主要源码如下:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
WCHAR WinlogonName[] = L"Winlogon.exe";
UXINIT ThemesOnCreateSessionWithPID;
HMODULE hUxLib;
DWORD WinLogonPID = 0;
hUxLib = (HMODULE)LoadLibraryW(L"UxInit.Dll");
if(hUxLib)
{
ThemesOnCreateSessionWithPID = (UXINIT)GetProcAddress(hUxLib,(LPCSTR)0x0D);
if(ThemesOnCreateSessionWithPID!=NULL){
WinLogonPID = GetProcessIDByName(WinlogonName);
if(WinLogonPID != 0)
ThemesOnCreateSessionWithPID(WinLogonPID);
}
FreeLibrary(hUxLib);
}
}
system用户下只能启用basic主题,没有aero特效。
(2) netframework外置需要几个条件,
比如vc2005的运行库,系统文件mscoree.dll。最重要是两个注册表键值
;这个指示framework的文件在哪里。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"InstallRoot"="k:\\wim9\\Microsoft.NET\\Framework\\"
;这个指示assembly的文件在哪里。注意路径是assembly的上一级文件夹。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"CacheLocation"="k:\\wim9\\"
(3) minint键值是由ntoskrnl或ntkrnlpa根据winlodload传递过来的参数自动生成的,如果修改ntoskrnl,pe的系统盘就会变成c,原c盘不见了
。
现在论坛上的win7pe很多都是从winbuilder构建而来,其组件大多为vista设计,所以造成某些功能不正常,比如msi的clsid注册表键值Microsoft Windows Installer Message RPC下的dllversion版本号不正确,就造成msi工作不正常。
图片查看器需要win7pe\Windows\System32\spool\drivers\color下的配色文件才能在非全屏模式下查看图片。
(4) win7pe中大部分组件都转变成了以com接口的方式提供服务,这就造成了一部分软件必须在有用户登录的情况下才能运行。比如系统自带的抓图软件。Win7自带的winmaill被微软故意设计成不能使用,可笑的是微软竟然还不断给它提供升级补丁。如果想使用,将vista中相应的msoe.dll拷过来覆盖win7的相应文件就可以了。
(5)
想起来再说
|
|