无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 24527|回复: 28
打印 上一主题 下一主题

howto:在win7pe中启用主题&.NET Framework外置及其他

[复制链接]
跳转到指定楼层
1#
发表于 2010-6-13 12:14:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ux.rar (3.97 KB, 下载次数: 1393) 1
因为在win7pe中启用主题要比xp中简单的多,所以就和其他的东西合并到一块发帖。
第一个条件:注册表中相应的键值要正确,系统文件不能缺少。比如,win7pe中主题服务不再是shsvcs.dll,而是themeservice.dll;主题的初始化统一由文件uxinit.dll来管理。
第二个条件:修改winlogon.exe在其中查找unicode字符串minint,修改其中任一字母,只要和原先不一样即可,比如,改成minins
第三个条件:启动主题服务。可以用pecmdserv命令,也可以修改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键值是由ntoskrnlntkrnlpa根据winlodload传递过来的参数自动生成的,如果修改ntoskrnl,pe的系统盘就会变成c,原c盘不见了

现在论坛上的win7pe很多都是从winbuilder构建而来,其组件大多为vista设计,所以造成某些功能不正常,比如msiclsid注册表键值Microsoft Windows Installer Message RPC下的dllversion版本号不正确,就造成msi工作不正常。
图片查看器需要win7pe\Windows\System32\spool\drivers\color下的配色文件才能在非全屏模式下查看图片。
4 win7pe中大部分组件都转变成了以com接口的方式提供服务,这就造成了一部分软件必须在有用户登录的情况下才能运行。比如系统自带的抓图软件。Win7自带的winmaill被微软故意设计成不能使用,可笑的是微软竟然还不断给它提供升级补丁。如果想使用,将vista中相应的msoe.dll拷过来覆盖win7的相应文件就可以了。
5
想起来再说

图片查看器.rar

243.29 KB, 下载次数: 958, 下载积分: 无忧币 -2

推荐
发表于 2010-6-13 14:08:42 | 只看该作者
原帖由 yamingw 于 2010-6-13 13:32 发表
老大谦虚了。pecmd已内置GetProcessIDByName 相似的功能,只不过是以FIND命令包装后导出的。比如 FIND Explorer.exe 。PECMD 实在是太强大了,每次使用都得看帮助。另ux.rar 内有源码。


的确是有这样的代码了,只是没有做成现成的命令,PECMD代码中已包括了[从进程名取进程ID]、[从进程ID取映像名]、[从进程ID取进程主窗口]、[从窗口取进程名]、[取当前进程父进程]等一系列函数。
回复

使用道具 举报

推荐
 楼主| 发表于 2010-6-13 13:32:34 | 只看该作者

回复 #2 lxl1638 的帖子

老大谦虚了。pecmd已内置GetProcessIDByName 相似的功能,只不过是以FIND命令包装后导出的。比如 FIND Explorer.exe 。PECMD 实在是太强大了,每次使用都得看帮助。另ux.rar 内有源码。

[ 本帖最后由 yamingw 于 2010-6-13 13:36 编辑 ]
回复

使用道具 举报

推荐
发表于 2010-6-13 12:51:34 | 只看该作者
得到 lxl1638 大大支持不容易
回复

使用道具 举报

推荐
发表于 2010-6-13 12:37:59 | 只看该作者
原帖由 yamingw 于 2010-6-13 12:14 发表
91463(1)
因为在win7pe中启用主题要比xp中简单的多,所以就和其他的东西合并到一块发帖。
第一个条件:注册表中相应的键值要正确,系统文件不能缺少。比如,win7pe中主题服务不再是shsvcs.dll,而是themeser ...


有意思,除了 GetProcessIDByName (通过进程名取进程ID)无法用PECMD实现之外,其它的都好象可以通过CALL命令实现。
回复

使用道具 举报

6#
发表于 2010-6-24 08:35:23 | 只看该作者
不好意思打扰了,winlogon.exe没找到minint。winhex操作的
回复

使用道具 举报

7#
 楼主| 发表于 2010-6-24 08:48:48 | 只看该作者

回复 #6 shn 的帖子

字符串是Unicode的,可查找十六进制: 4D0069006E0069004E005400
附件是修改好的。

winlogon.rar

113.68 KB, 下载次数: 801, 下载积分: 无忧币 -2

点评

老大。通过winhex工具没有找到相应的值……  详情 回复 发表于 2018-8-18 21:30
回复

使用道具 举报

8#
发表于 2010-6-24 09:52:07 | 只看该作者
多谢。弄一下看看。
pe3的优势很大呢
回复

使用道具 举报

9#
发表于 2010-6-24 10:30:25 | 只看该作者
ok,按找楼主步骤实现
但为什么:system用户下只能启用basic主题,没有aero特效呢
回复

使用道具 举报

10#
发表于 2010-6-24 11:11:06 | 只看该作者
盼望有现成的鱼让来鸟来钓……谢谢
回复

使用道具 举报

11#
发表于 2010-6-24 12:26:11 | 只看该作者
即使能打开阴影也可以呀,不一定非得是玻璃特效。
回复

使用道具 举报

12#
发表于 2010-6-28 12:09:06 | 只看该作者
对pe3的研究的确有非常大的帮助。顶一下
回复

使用道具 举报

13#
发表于 2010-11-12 00:53:06 | 只看该作者
开启主题是不是还需要其他操作?单按楼主那提示没做用啊..
回复

使用道具 举报

14#
发表于 2010-11-29 20:46:18 | 只看该作者
原帖由 yamingw 于 2010-6-13 12:14 发表
91463(1)
因为在win7pe中启用主题要比xp中简单的多,所以就和其他的东西合并到一块发帖。
第一个条件:注册表中相应的键值要正确,系统文件不能缺少。比如,win7pe中主题服务不再是shsvcs.dll,而是themeser ...



   yamingw太强大了,已然把Win7PE主题掌握了,佩服!
   我至今对WinXPE主题还没有搞明白----启动后可以更换为XP主题,但就是不能自动启动。
   你能不能指点指点,它困扰我1个月了.......
   谢谢!
回复

使用道具 举报

15#
发表于 2010-12-3 19:28:27 | 只看该作者
老大出国了?
回复

使用道具 举报

16#
发表于 2012-12-27 16:36:16 | 只看该作者
\Windows\Resources
\Windows\system32\shsvcs.dll
\Windows\system32\themeservice.dll
\Windows\system32\themeui.dll
\Windows\system32\tstheme.exe
\Windows\system32\uxsms.dll
\Windows\system32\UXInit.dll
\Windows\system32\net.exe
\Windows\system32\WindowsCodecs.dll
\Windows\system32\WindowsCodecsExt.dll
\Windows\system32\UIRibbon.dll
\Windows\system32\UIRibbonRes.dll
回复

使用道具 举报

17#
发表于 2018-8-18 21:30:49 | 只看该作者
yamingw 发表于 2010-6-24 08:48
字符串是Unicode的,可查找十六进制: 4D0069006E0069004E005400
附件是修改好的。

老大。通过winhex工具没有找到相应的值……   
回复

使用道具 举报

18#
发表于 2019-5-30 11:33:56 | 只看该作者
顶顶顶~~~~
回复

使用道具 举报

19#
发表于 2019-12-7 23:10:59 | 只看该作者
感谢分享!!
回复

使用道具 举报

20#
发表于 2020-1-2 09:44:15 | 只看该作者
感谢分享,暂时还没法下载ux.rar文件
回复

使用道具 举报

21#
发表于 2021-1-1 18:41:56 | 只看该作者
感谢分享,
回复

使用道具 举报

22#
发表于 2021-7-21 21:54:45 | 只看该作者
过来学习下
回复

使用道具 举报

23#
发表于 2022-7-14 22:27:45 | 只看该作者
0
回复

使用道具 举报

24#
发表于 2022-12-2 17:28:30 | 只看该作者
感谢分享
回复

使用道具 举报

25#
发表于 2023-7-30 00:40:25 | 只看该作者
0
回复

使用道具 举报

26#
发表于 2023-8-18 10:11:46 | 只看该作者
非常感谢,解决了大问题
回复

使用道具 举报

27#
发表于 2023-8-24 14:35:21 | 只看该作者
那么去他版本的PE,比如Windows11的可不可以?
回复

使用道具 举报

28#
发表于 2023-8-24 14:35:55 | 只看该作者
现在试一下
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 13:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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