无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5281|回复: 7
打印 上一主题 下一主题

[分享] 关于开启 netprofm 服务的折腾结果,另附Win8开始菜单、系统属性修改

[复制链接]
跳转到指定楼层
1#
发表于 2022-8-18 16:46:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liangyi 于 2022-9-19 16:13 编辑

1. PE 添加 netprofm 服务
起因:求助PE的 netprofm 服务的依赖组件及注册表
最近一时兴起折腾手上的一个 Win8PE,想给它添加 netprofm 服务,
两个依赖服务 Network Location Awareness、Remote Procedure Call (RPC) 均已启动,
相关文件加了
  1. netprofm.dll
  2. netprofmsvc.dll
复制代码
注册表也加了
  1. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot\Network\netprofm
  2. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SQMServiceList
  3. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\netprofm

  4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{C96887DA-A652-4426-905E-4A37546F847C}
  6. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DCB00C01-570F-4A9B-8D69-199FDBA5723B}
  7. HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{DCB00D01-570F-4A9B-8D69-199FDBA5723B}
  8. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
  9. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{fbcfac3f-8459-419f-8e48-1f0b49cdb85e}
  10. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Publishers\{fbcfac3f-8460-419f-8e48-1f0b49cdb85e}
复制代码
奈何就是开启不了服务,提示 “设备未就绪”,求助帖也沉鸟                                                                                                                                                           
错误提示如下:设备未就绪


所以,只好随缘扒拉一下网络,看是否有相关信息,然后就扒到一个帖子(已解决)干掉peset后如何启动PE的网络组件  17楼 的解决代码,通过测试,在启动网络服务前,先修改 HKLM\SYSTEM\Setup\SystemSetupInProgress 的键值为 0 ,接着就可以成功开启 netprofm;也就是说,netprofm 服务启动前,会先检查  SystemSetupInProgress 的键值
  1. REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#0
  2. serv netprofm
复制代码

借助二进制编辑软件,可以看到 netprofmsvc.dll 中的 SystemSetupInProgress 字符串

———————————————————————————————————————————————————

延伸 -- 这个键值在系统中发挥什么作用呢?
搜索关于 SystemSetupInProgress 键值的资料,找到一篇发表于 2012年的文章 玩弄PE,让你的WinPE也穿上华丽的外衣 文章已贴在 2 楼,文章开篇提到
  1. Windows 如果是正常启动,Winlogon 启动后先初始化一些全局变量,接着检测 HKEY_LOCAL_MACHINE\SYSTEM\Setup 下的 SystemSetupInProgress 是否为 0,如果 SystemSetupInProgress = 0,则初始化系统服务后调用 MSgina.DLL 登录 XP;如果 SystemSetupInProgress = 1,则在启动系统服务 SamSs 时告诉它不要管 SAM 数据库,启动一些必要的服务后,比如 Services,lsass,然后就启动 HKEY_LOCAL_MACHINE\SYSTEM\Setup 下由 CmdLine 指定的程序,等待程序结束,重启或者关机。
复制代码
我们常见的,基于pecmd的PE,其启动接管工作就是由注册表 HKEY_LOCAL_MACHINE\SYSTEM\Setup 位置的 CmdLine 指定程序开始的
  1. HKEY_LOCAL_MACHINE\SYSTEM\Setup
  2. "CmdLine"="pecmd.exe Main %SystemRoot%\\System32\\pecmd.ini"
复制代码
文章还提到
  1. 每当应用程序要求合适的 dll 时,系统会调用 SXS.dll ,要求它调用指定 dll ,此时 SXS.dll 会先用 FusionpAreWeInOSSetupMode 函数判断 SystemSetupInProgress 是否为 0,若键值为 0,它会在 %SystemRoot%\WinSxS 文件夹中寻找,当有多个相同文件时,它就查看 C:\Windows\WinSxS\Manifests ,以 C:\Windows\WinSxS\Policies 中的规则来调用相应的文件。
复制代码
总的来说,正常系统的 SystemSetupInProgress = 0,PE的 SystemSetupInProgress = 1;要避免系统对 SystemSetupInProgress 的检测,要么临时修改 SystemSetupInProgress 的值,随后恢复;
要么就修改相关 dll / exe 文件中的 SystemSetupInProgress 字符串,如 SystemSetupInProgress  ==>  SystemSetupInProgrest,然后在 SYSTEM\Setup 下比照着 SystemSetupInProgress, 新建一个名称为 SystemSetupInProgrest 的 REG_DWORD 类型值 ,设为 0。以此作为判断欺骗,原 SystemSetupInProgress 不动,避免引起其他错误

相关搜索文章:
玩弄PE,让你的WinPE也穿上华丽的外衣
Check if program is running in a PE ?
=================================================================
2. Win8PE开始菜单右侧显示“程序”菜单修改
做个备忘,想修改开始菜单,却忘记了怎么改,搜索才发现,自己曾跟帖回复过别人 Win8PE开始菜单右侧显示“所有程序”或“程序”菜单修改
1.在 pecmd.ini 加入以下内容
  1. REGI HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowRecordedTV=#2
  2. REGI ~HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{1A6FDBA2-F42D-4358-A798-B74D745926C5}=%%USERPROFILE%%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
复制代码
2.清空路径  Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\  下的文件及文件夹
3.打包测试(以原帖子两个图为例)
     
注意!!!:如果仅加入
  1. REGI HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_ShowRecordedTV=#2
  2. REGI ~HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{1A6FDBA2-F42D-4358-A798-B74D745926C5}=%%USERPROFILE%%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
复制代码
且路径 Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\ 下存在 Programs 文件夹,就会是右侧的效果
=================================================================
3. 系统属性显示
论坛搜索到 pe系统属性里怎么显示的CPU频率和内存容量 ,根据 4楼 nttwqz 坛友的跟帖内容,补充相关文件
上传一个Win8PE的 system32/webm/Repository 文件夹打包,解开大概 2.8MB,别人大概可能或许能用吧
系统属性显示实际信息所需文件
  1. system32/webm/Repository/
  2. cimwin32.dll
  3. esscli.dll
  4. fastprox.dll
  5. repdrvfs.dll
  6. wbemcore.dll
  7. wbemess.dll
  8. wbemprox.dll
  9. wbemsvc.dll
  10. WmiPrvSD.dll
  11. WmiPrvSE.exe
  12. WMIsvc.dll
  13. wmiutils.dll

  14. 其中Repository文件夹可以做到最小化,具体的做法不清楚,图省事直接用 boot.wim 的

  15. systemcpl.dll
  16. framedynos.dll
  17. ncobjapi.dll
复制代码
Repository.rar (456.41 KB, 下载次数: 21)










评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 专业!

查看全部评分

2#
 楼主| 发表于 2022-8-18 16:47:56 | 只看该作者
本帖最后由 liangyi 于 2023-11-14 10:30 编辑

我把上面那个关于 SystemSetupInProgress 键值的文章扒过来了,万一哪天有人用到呢———————————————————————————————————————————————————
PE下使用桌面主题的技巧
     在正常windows下更换主题相信大家也会了,但在PE下使用桌面主题大家应该就没见过吧。
  先看看原理:Winlogon启动后先初始化一些全局变量,检测 HKEY_LOCAL_MACHINE\SYSTEM\Setup 下的 SystemSetupInProgress 是否为零,如果是 0,就正常启动;如果是 1,则在启动系统服务 SamSs 时告诉它不要管 SAM 数据库,启动一些必要的服务后,比如 Services,lsass,然后就启动HKEY_LOCAL_MACHINE\SYSTEM\Setup 下由 CMDline 指定的程序,等待程序结束,重启或者关机。当 SystemSetupInProgress = 0,则初始化系统服务后调用 MSgina.dll 登录XP。MSgina.dll 在初始化时调用 SHsvcs.dll 产生一个 ThemesStartEvent 系统级事件,代码如下:
  1. #define ThemeWatchForStart_Ordinal 1
  2. #define ThemeWaitForServiceReady_Ordinal 2
  3. typedef DWORD (_stdcall *PFN_ThemeWaitForServiceReady)(DWORD dwTimeout);
  4. typedef BOOL (_stdcall *PFN_ThemeWatchForStart)(void);

  5. HMODULE hShsvcs = LoadLibrary(_T("shsvcs.dll"));
  6.     if( hShsvcs != NULL )
  7.     {
  8.     PFN_ThemeWaitForServiceReady pfThemeWait
  9.         = (PFN_ThemeWaitForServiceReady)GetProcAddress( hShsvcs, (LPCSTR)ThemeWaitForServiceReady_Ordinal);

  10.     PFN_ThemeWatchForStart pfThemeWatch
  11.         = (PFN_ThemeWatchForStart)GetProcAddress( hShsvcs,(LPCSTR)ThemeWatchForStart_Ordinal);

  12.     if(    pfThemeWait != NULL && pfThemeWatch != NULL )
  13.     {
  14.         pfThemeWait(1000);
  15.         pfThemeWatch();
  16.     }
  17.     CloseHandle(hShsvcs);
  18.     }
复制代码
  那位同学说了:“把 SystemSetupInProgress 直接改成 0 不就得了!”
  Lsass告诉你:“此路不通!重启吧你”
  我告诉你:“我们可以改一改 Winlogon,让它先启动 Msgina 或是直接调用 Shsvcs 就行了。”
  ThemesStartEvent 事件是出来了,怎么?还不行!
  那是因为还有个家伙在捣乱: SXS.dll。他会在系统要求它调用指定 dll 时用 FusionpAreWeInOSSetupMode 函数判断 SystemSetupInProgress 是否为 0,如果为 1,它就会告诉系统:“我那个什么......先歇会儿再说。”
  然而系统要实现 Themes,恰恰需要它去找到合适的 ComCtl32.dll。
  你可以修改它,但是合适的 dll 在哪里?
  这种概念是从微软的 .NET FrameWork 的 GAC 引入的。每当应用程序要求合适的 dll 时,系统会调用 SXS.dll 在 %SystemRoot%\WinSxS 文件夹中寻找,当有多个相同文件时,它就查看 C:\Windows\WinSxS\Manifests ,以 C:\Windows\WinSxS\Policies 中的规则来调用相应的文件。
———————————————————————————————————————————————————
  动手了:
  1、启用 Themes 需要以下文件:
  1. 修改版的 Winlogon 调用 Msgina.dll 或直接修改 MinLogon(XPE Feathure Pack 2007 中有此文件),
  2. Winlogon, Msgina.dll, Shsvcs.dll, Activeds.dll, uxtheme.dll, themeui.dll, sxs.dll
复制代码
C:\Windows\WinSxS\Manifests 文件夹中的(对应SP3)
  1. x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83.cat
  2. 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 文件夹下的
  1. 6.0.2600.5512.cat
  2. 6.0.2600.5512.Policy
复制代码
C:\Windows\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83 文件夹下的
  1. comctl32.dll
复制代码
还有一些 Windows 文件夹 System32 下的文件,自己研究吧。(用Depends工具找一找文件的依赖关系)
  2、修改文件。(均以SP3的文件为例)                                                                                               
1. 使用 UltraEdit 打开文件 Winlogon.exe, 查找 AF46FFFF85C07512,将最后的 12 改为 27,查找 56E8151D000056  FF7614E8FC,修改为 56E8151D000056  E8BC91FFFF(看清了,只修改最后五位);
2. 打开 SXS.dll 查找十六进制数值 530079007300740065006d005300650074007500700049006e00500072006f00670072006500                                        可以看到 SystemSetupInProgress 的字样,把最后的 s 改成 t,即 73 改成 74。
3. 修改 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 路径指向你自己的图片。

















回复

使用道具 举报

3#
发表于 2022-8-18 17:08:13 | 只看该作者
技术帖子!钻研很深啊!

点评

没有没有,就搜索扒拉别人的知识  发表于 2022-8-18 17:23
回复

使用道具 举报

4#
发表于 2022-8-18 18:05:13 | 只看该作者
slore的wimbuilder2里面有这个批处理:
StartNetprofm.bat
if exist "%WinDir%\System32\netprofmsvc.dll" (
  sc config netprofm start= demand
  rem reg add HKLM\SYSTEM\ControlSet001\Services\netprofm /v Start /t REG_DWORD /d 2 /f
  reg add HKLM\SYSTEM\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f
  Net Start netprofm
  reg add HKLM\SYSTEM\Setup /v SystemSetupInProgress /t REG_DWORD /d 1 /f
)

回复

使用道具 举报

5#
发表于 2022-8-18 20:35:44 | 只看该作者
感谢分享
回复

使用道具 举报

6#
发表于 2022-9-16 22:27:38 | 只看该作者
楼主用心,版主细心,这些问题都能找到解决办法了。
回复

使用道具 举报

7#
发表于 2023-11-13 21:58:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-16 22:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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