无忧启动论坛

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

Win7PE Wpeinit等几个关键文件的作用,供参考

[复制链接]
跳转到指定楼层
1#
发表于 2009-8-10 22:57:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近来论坛部分Win7PE爱好者讨论PECMD不能完全代替Wpeinit.exe的问题,否则会出现网络不正常的现象。其实以PECMD提供的命令是
可以做到的。以下是WinPeShl,WpeInit程序运行的大致流程,聪明的你很快就会把它改成PECMD的配置文件吧。
------------------------------------------------------------------------------------------------------------
WinPeShl.exe:
wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
{
  
  if ( QueryRegValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\microsoft\\windows nt\\currentversion\\WinPE", L"ShellLogPath") )

    CreateLogFile( );
else
    CreateLogFile(L"winpeshl.log");

Message("Windows PE Shell beginning execution");
  SetCursors();
  InitSys();
  LoadExec(L"%SystemRoot%\\system32\\winpeshl.ini")
  
}
InitSys()
{
  
   LoadLocalFonts();
  
  QueryRegValue(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\WinPE", L"CustomBackground") )
  
  SystemParametersInfoW();
  WpeInstallServicePrivileges();
  
  WpeInstallServicesSecurityTemplate();

  hObject = CreateEventW((LPSECURITY_ATTRIBUTES)v9, 1, v9, L"Global\\EVENT_WINPE_REMSTOR");
  hHandle = CreateThread((LPSECURITY_ATTRIBUTES)v9, v9, StartAddress, (LPVOID)v9, v9, &ThreadId);
  result = (void *)QueryRegValue01(
                     HKEY_LOCAL_MACHINE,
                     L"SYSTEM\\CurrentControlSet\\Control\\WMI\\Autologger\\WinPEFileTrace",
                     L"Start");
  if ( result )
  {
    v30 = v9;
    sub_1006847(67108864, L"Profiling is enabled; initializing run-time profiler.", ST18_4_0);
    result = CreateThread((LPSECURITY_ATTRIBUTES)v9, v9, SerializeAppProfile, (LPVOID)v9, v9, &v30);
    dword_100B040 = (int)result;
  }
  
}
-----------------------------------------------------------------------------------------------------------------------
WpeInit.exe:
int wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
{

  if ( lpCmdLine )
    UnattendFindFileFromCmdLine();
  else
    {
    wttime = GetTickCount();
    WpeWaitForRemovableStorage();
    Waitime = GetTickCount() - wttime;
    hLogFile = XLOG(L"wpeinit.log");
    if (UnattendFindAnswerFile()){
//Checkit;
    }
   
   else
        WriteLog(hLogFile,"No unattend file was found; WPEINIT is using default settings to initialize WinPE" );
     
    if ( Waitime )
      WriteLog(hLogFile, "Spent Waitime%ums initializing removable media before unattend search" );
    }
      result = WpeActuateUnattendSettings();
   //CleanUp
return result;
}
-----------------------------------------------------------------------------------------------------------------------
WpeUtil.Dll:
WpeActuateUnattendSettings()
{
    UnattendDisplay();
  
    UnattendCompterName();
   
    UnattendPageFile();
   
    UnattendOC();
   
    UnattendNet();
   
    UnattendFireWall();
  
    UnattendRunSynchronous();
   
    UnattendRunASyncs();
   
    UnattendRestart();
}

UnattendNet()
{
  if(NetNotEnable == WpeQueryNetworkStatus()
            
  MyInitNetWork();
}
MyInitNetWork()
{
  
  
WpeInitializeNetworkComponents();

WpeInitializeNetworkDrivers();
  
}
  
WpeInitializeNetworkComponents()
{
  Install MS_MSCLIENT
  Install MS_NETBIOS
  Install MS_SMB
  Install MS_TCPIP6
  Install MS_TCPIP
  StartService dhcp
  StartService lmhosts
  StartService ikeext
  StartService mpssvc
//lanmanStation...
}
WpeInitializeNetworkDrivers()
{
  WpeInitializeDriversOfClass();
}
WpeInitializeDriversOfClass(int a1, int a2)
{
//EnumDevice then DiInstallDevice();
}
2#
发表于 2009-8-11 00:45:23 | 只看该作者
多谢前辈!正瞅着呢!

这应该是VC的码吧···

[ 本帖最后由 yulon 于 2009-8-11 19:02 编辑 ]
回复

使用道具 举报

3#
发表于 2009-8-11 01:57:05 | 只看该作者
看不懂!支持一下!!!!!
回复

使用道具 举报

4#
发表于 2009-8-11 12:13:15 | 只看该作者
我也发现如果不执行winpeshl.exe 。win7的安装程序启动的很慢。

谢谢提供这些信息。
回复

使用道具 举报

5#
发表于 2009-8-11 12:29:22 | 只看该作者
正在慢慢学习中 这段代码还看不明白
回复

使用道具 举报

6#
发表于 2009-8-12 13:34:08 | 只看该作者
吸收消化!!!!!!!
回复

使用道具 举报

7#
发表于 2013-2-6 20:20:28 | 只看该作者
楼主的数据结构式描述,我没完全理解你的意思。
也没包含我想要的代码部分。
求助于LZ,WinPEshl.exe 具体是如何调用文件的,能否详细点。

微软官方说明如下:
主题:Windows PE 启动过程
阐述:
此处省略几行字。。。
[1]. Winlogon.exe 根据 HKEY_LOCAL_MACHINE\SYSTEM\Setup\CmdLine 注册表值来运行设置。Winpeshl.exe 将启动 %SYSTEMDRIVE%\sources\setup.exe 文件,前提是该文件存在。如果该文件不存在,Winpeshl.exe 将确定 %SYSTEMROOT%\system32\winpeshl.ini 文件是否指定了某个应用程序。如果该文件未指定应用程序,则 Winpeshl.exe 将执行 cmd /k %SYSTEMROOT%\system32\startnet.cmd 文件。默认情况下,Windows PE 包含启动 Wpeinit.exe 文件的 Startnet.cmd 文件。Wpeinit.exe 将加载网络资源并协调网络组件(如 DHCP)。
[2]. 当 Wpeinit.exe 结束时,将会出现命令提示符窗口。当命令提示符窗口出现时,Windows PE 的启动进程结束。

但是,在[1]中的结论似乎只在BOOT.WIM 文件中是成立的。
在WinRE.WIM 中,winpeshl.exe 跳过了setup.exe ,直接运行了winpeshl.ini 中的命令:

  1. [LaunchApp]
  2. AppPath=X:\sources\recovery\recenv.exe
复制代码

特来向LZ求解。

[ 本帖最后由 achst 于 2013-2-6 20:23 编辑 ]
回复

使用道具 举报

8#
发表于 2013-2-6 20:24:52 | 只看该作者
希望楼主看到,帮帮我这个大忙。而我试试从现象看本质。
==========================================
OKAY,借楼主的帖子作场地,现场试验,保存资料。//回头再删掉...  ...
==========================================

[ 本帖最后由 achst 于 2013-2-6 22:00 编辑 ]

winpeshl.log from WinRE.jpg (29.61 KB, 下载次数: 13)

winpeshl.log from WinRE.jpg

进程-来自WinRE.jpg (28.74 KB, 下载次数: 19)

进程-来自WinRE.jpg

winpeshl.log from BOOT.WIM.jpg (34.08 KB, 下载次数: 12)

winpeshl.log from BOOT.WIM.jpg

进程-来自BOOT.WIM.jpg (42.69 KB, 下载次数: 20)

进程-来自BOOT.WIM.jpg

winpeshl.log from WinPE.wim.jpg (36.97 KB, 下载次数: 14)

winpeshl.log from WinPE.wim.jpg

进程-来自WinPE.WIM.jpg (38.14 KB, 下载次数: 14)

进程-来自WinPE.WIM.jpg

winpeshl.log from 修改的BOOT.WIM.jpg (39.87 KB, 下载次数: 15)

winpeshl.log from 修改的BOOT.WIM.jpg

进程-来自$Windows.~bt替换为空值的BOOT.WIM.jpg (35.45 KB, 下载次数: 18)

进程-来自$Windows.~bt替换为空值的BOOT.WIM.jpg
回复

使用道具 举报

9#
发表于 2016-5-9 00:30:33 | 只看该作者
本帖最后由 红毛樱木 于 2024-5-13 22:21 编辑

WpeInitializeNetworkComponents()
{
  Install MS_MSCLIENT
  Install MS_NETBIOS
  Install MS_SMB
  Install MS_TCPIP6
  Install MS_TCPIP
  StartService dhcp
  StartService lmhosts
  StartService ikeext
  StartService mpssvc
//lanmanStation...
}


回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-29 16:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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