无忧启动论坛

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

[发布] 确定当前pe 对应的 boot.wim 位置,基本解决

  [复制链接]
1#
发表于 2022-11-4 04:37:46 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-4 05:56 编辑

VM下,测试,光驱启动,我的C盘下,并没有WEPE.WIM,文件在ESP分区里

我也在试图解决这个问题,不过我的功底和你没法儿比,只是用最笨的方法,读取注册表后,最笨的方法得到硬盘的信息,例如

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control
    SystemStartOptions    REG_SZ     NOEXECUTE=OPTIN  PAE  MININT  FVEBOOT=2658304 RDIMAGEOFFSET=8192 RDIMAGELENGTH=971264 RDPATH=MULTI(0)DISK(0)RDISK(0)PARTITION(1)\WEPE\WEPE64.WIM

然后,用DISK参数,把DISK(0)RDISK(0)PARTITION(1)卸载再分配盘符,以达到分配隐藏分区的目的,定位后挂载外置
这是我PE下的代码,在你面前班门弄斧,实在是浅显,不要笑话我。只是想提个思路,期待完美解决这个问题



PECMD.INI中的代码
--------------------------------------------------------------------
//查找并分配外置所在的隐藏分区
IFEX %ProgramFiles%\WEPE.INI,ENVI wzPath=%ProgramFiles%\WEPE.INI!CALL FINDFZ
FDIR wimPath=%wzPath%

_SUB FINDFZ
EXEC =!CMD /C REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ /v SystemStartOptions > %temp%\1.TXT
EXEC =!"%ProgramFiles%\SYS\disk.cmd"

IFEX %temp%\3.INI,
{
    LOAD %temp%\3.INI
    DISK ,%RDISK%,%PARTITION%,1
    CALL getNoDrv
    DISK  %nodrv%,%RDISK%,%PARTITION%,1
    ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    IFEX %wzPath%,!
    {
        CALL getNoDrv
        DISK %nodrv%,%RDISK%,2,1
        ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    }
}
IFEX %wzPath%,!
{
    FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
    ENVI wzPath=%STPATH%\WEPE\WEPE.INI
}
IFEX %wzPath%,!
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
_END


_SUB getNoDrv
    ENVI nodrv=
    IFEX W:,!ENVI nodrv=W:
    IFEX V:,!ENVI nodrv=V:
    IFEX U:,!ENVI nodrv=U:
    IFEX T:,!ENVI nodrv=T:
    IFEX S:,!ENVI nodrv=S:
    IFEX R:,!ENVI nodrv=R:
    IFEX Q:,!ENVI nodrv=Q:
    IFEX P:,!ENVI nodrv=P:
    IFEX O:,!ENVI nodrv=O:
    IFEX N:,!ENVI nodrv=N:
    IFEX M:,!ENVI nodrv=M:
    IFEX L:,!ENVI nodrv=L:
    IFEX K:,!ENVI nodrv=K:
    IFEX G:,!ENVI nodrv=G:
    IFEX I:,!ENVI nodrv=I:
    IFEX H:,!ENVI nodrv=H:
    IFEX G:,!ENVI nodrv=G:
    IFEX F:,!ENVI nodrv=F:
    IFEX E:,!ENVI nodrv=E:
    IFEX D:,!ENVI nodrv=D:
    IFEX C:,!ENVI nodrv=C:
_END

=========================================================================
%ProgramFiles%\SYS\disk.cmd中的代码
@echo off&setlocal enabledelayedexpansion
set key=PARTITION(
(for /f "delims=" %%a in (%temp%\1.TXT) do (
   set var=
   set "str=%%a%key%"
   for /l %%b in (1 1 100) do (
      if defined str set str=!str:*%key%=!
      for /f "delims=." %%c in ("!str!") do set var=!var!%%c.
   )
   echo;!var!
))>%temp%\2.TXT
for /f %%i in (%temp%\2.TXT) do (
set str=%%i
set str=!str:~0,1!
echo envi PARTITION=!str! >%temp%\3.INI
)

set key=RDISK(
(for /f "delims=" %%a in (%temp%\1.TXT) do (
   set var=
   set "str=%%a%key%"
   for /l %%b in (1 1 100) do (
      if defined str set str=!str:*%key%=!
      for /f "delims=." %%c in ("!str!") do set var=!var!%%c.
   )
   echo;!var!
))>%temp%\2.TXT
for /f %%i in (%temp%\2.TXT) do (
set str=%%i
set str=!str:~0,1!
echo envi RDISK=!str! >>%temp%\3.INI
)
::pause



很笨也不是很全面的方法,请不要见笑哈【22.11.01】大漠孤鹰Win11PE_x64_APFS(双模启动,可安装到系统、隐藏分区、空硬盘) - PE作品发布区 - 无忧启动论坛 - Powered by Discuz! (wuyou.net)


回复

使用道具 举报

2#
发表于 2022-11-4 04:46:49 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-4 04:48 编辑
红毛樱木 发表于 2022-11-4 04:01
可能也许或者是把启动设备都认为是编号0

   {
        CALL getNoDrv
        DISK %nodrv%,%RDISK%,2,1
        ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    }

这一段,是用UltraISO隐藏写入U盘,实机启动后,得出来的,硬套了上去
记得注册表读取的好像是
RDPATH=MULTI(0)DISK(0)RDISK(2)PARTITION(4)
回复

使用道具 举报

3#
发表于 2022-11-4 05:01:30 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-4 05:03 编辑
红毛樱木 发表于 2022-11-4 04:01
可能也许或者是把启动设备都认为是编号0

IFEX %wzPath%,!
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}

如果所有根目录只存在一个WEPE\WEPE.INI
这个感觉最靠谱,
搜索所有分区包括隐藏分区的指定文件,然后 MOUN 加载并自动分配盘符
X:\a是虚的,只是为了分配盘符
回复

使用道具 举报

4#
发表于 2022-11-4 08:27:22 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-4 07:19
目前光盘启动 是 会出错,你先试试 boot.wim 在硬盘的情况

实机测试,两块SSD,分别安装PE并启动,无论是否在隐藏分区,我的这段代码都能分配盘符和准确定位,
再多硬盘的情况就没条件测试了
IFEX %temp%\3.INI,
{
    LOAD %temp%\3.INI
    DISK ,%RDISK%,%PARTITION%,1
    CALL getNoDrv
    DISK  %nodrv%,%RDISK%,%PARTITION%,1
    ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    IFEX %wzPath%,!
    {
回复

使用道具 举报

5#
发表于 2022-11-4 09:43:08 | 显示全部楼层

是呀,这就是大家最开始觉得五花八门,不好实现的原因
回复

使用道具 举报

6#
发表于 2022-11-4 10:24:36 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-4 10:12
用 pecmd 获取 系统未使用盘符,用 Fdrv -idle 指令就可以。

哦,哦,谢谢呀,我写的太笨了
回复

使用道具 举报

7#
发表于 2022-11-4 10:36:55 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-4 10:12
用 pecmd 获取 系统未使用盘符,用 Fdrv -idle 指令就可以。

哎,没吃透PECMD呀,两行就完事的,要我弄了十几行

FDRV *idle nodrv
MSTR s_nodrv=7,2,%nodrv%
回复

使用道具 举报

8#
发表于 2022-11-5 03:46:41 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-5 06:36 编辑

vm虚拟机下测试新版本boot.wim.drv-2.4
测试PE:【22.11.01】大漠孤鹰Win11PE_x64_APFS
光驱启动定位到了,成功!!
硬盘启动(PE安装到了ESP分区)如图:

运行boot.wim.drv-2.4前



运行后,ESP盘符变为C盘




回复

使用道具 举报

9#
发表于 2022-11-5 06:31:24 | 显示全部楼层
实机(外星人m15r6)下测试新版本boot.wim.drv-2.4
测试PE:【22.11.01】大漠孤鹰Win11PE_x64_APFS

硬盘启动(PE安装到了ESP分区),ESP分区盘符无变动,但结果和VM虚拟机测试的一样

UltraISO,隐藏启动分区模式写入U盘,运行后如图

回复

使用道具 举报

10#
发表于 2022-11-5 08:24:02 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 07:53
pecmd2012 是啥版本?估计是还没进化的 pecmd 没有

part -drv list volume  \ArcName\%value1%,&part ...

嗯,我也细看了下,应该是版本原因,可大部分PE都是这个版本
开始以为 part list cdrom 没问题part -drv list volume也应该没问题呢

回复

使用道具 举报

11#
发表于 2022-11-5 08:35:28 | 显示全部楼层
我下了 PECMD2012.1.88.05.94Stable-220825U测试.7z
不行呀,,能否给我你的PECMD.EXE
回复

使用道具 举报

12#
发表于 2022-11-5 09:13:21 | 显示全部楼层
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}

新版本的PECMD.EXE 要是能实现红色部分,那分配盘符的事情就解决了

{
    MOUN MULTI(0)DISK(0)RDISK(0)PARTITION(1)\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
回复

使用道具 举报

13#
发表于 2022-11-5 09:25:23 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 09:19
如果 不提前运行 分区挂载,而是 即得 即挂载,也是可以的。
几条代码就可以。

嗯,,,
你的PECMD.EXE能附件一个不,我下载了好几个都不行
回复

使用道具 举报

14#
发表于 2022-11-5 10:23:07 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-5 11:23 编辑
dos时代菜鸟 发表于 2022-11-5 10:09
我通常都是先对所有识别分区分配盘符

这个就有点晕了,
新的PECMD.EXE单独运行,,也就是用x.cmd调用文件夹中的正确定位
可把新的PECMD.EXE放到PE内核启动后,调用SYSTEM32中的就又读不出来了,
回复

使用道具 举报

15#
发表于 2022-11-5 10:51:25 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-5 10:52 编辑
dos时代菜鸟 发表于 2022-11-5 10:09
我通常都是先对所有识别分区分配盘符

x.cmd 和x.ini放到SYSTEM32文件内,运行x.cmd可定位,可右键加载.INI就不行难到非要.CMD的一下,,如果测试加载.INI还是不行的的话,我就直接在PECMD.INI中调用X.CMD得了
回复

使用道具 举报

16#
发表于 2022-11-5 11:12:03 | 显示全部楼层

实机测试
硬盘ESP启动,
x.cmd加载boot.wim.drv-2.4.ini成功定位

UltraISO,隐藏启动分区模式写入U盘,U启后已经以我之前的方式分配了盘符
x.cmd加载boot.wim.drv-2.4.ini



回复

使用道具 举报

17#
发表于 2022-11-5 11:21:20 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 11:18
pe自带 pecmd 版本不够

我已经替换了你给的那个新的PECMD
回复

使用道具 举报

18#
发表于 2022-11-5 12:00:13 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 11:31
把 ini文件 拖动到 高版本 pecmd.exe 上,用高版本pecmd.exe 运行

刚刚找到原因,,是我的原因,
是我安装DISMGUI时,把用右键.ini时PECMD运行指向DISMGUI文件夹内的Pe_cmd.exe了
不好意思哈

但U启测试,完完全全用的是X文件夹下的X.CMD.调用boot.wim.drv-2.4.ini,应该还是U盘相关的代码没完善
回复

使用道具 举报

19#
发表于 2022-11-5 15:01:45 | 显示全部楼层
弄到了PECMD.INI中了,就差红色的U启部分了,期待完善,我是没这水平,只能笨方法、

//查找并分配外置所在的隐藏分区
IFEX %ProgramFiles%\WEPE.INI,ENVI wzPath=%ProgramFiles%\WEPE.INI!CALL FINDFZ
FDIR wimPath=%wzPath%

_SUB FINDFZ
REGI .HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&sso
forx * %&sso% ,&p0,
{
    envi &&item0=
    mstr &&item0=0,7,%&p0%
    Find $"%&item0%"="RDPATH=" ,
    {
        mstr &p0=8,0,%&p0%
        mstr -delims:\ value1=<1>%&p0%
    }
}
Find $"%value1%"<>"",
{
    sed *ni &str2=0,[()0123456789], ,%value1%
    mstr &type1=<3>%&str2%%
    ifex '%&type1%'='rdisk',
    {
        part -drv list volume  \ArcName\%value1%,&part_info
        ifex '%&part_info%'<>'',
        {  
            mstr &disk,&part,&ltr=<2><3><8>%&part_info%
            Find $"%&ltr%"="",
            {
                fdrv -idlec &drvs=*:
                mstr &drvx=<1>%&drvs%
                disk %&drvx%,%&disk%:%&part%,1
                envi out_path=%drvx%\WEPE
            }!
                {
                    envi out_path=%&ltr%\WEPE
                }
            ENVI wzPath=%out_path%\WEPE.INI
        }
        IFEX %wzPath%,!
        {
            DISK %&drvx%,%RDISK%,2,1
            ENVI wzPath=%&drvx%\WEPE\WEPE.INI
        }
    }!
        {
        FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
        ENVI wzPath=%STPATH%\WEPE\WEPE.INI
        }  
}
IFEX %wzPath%,!
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
    EXEC =!CMD /C echo envi wzPath=%wzPath% >%temp%\wzPath.ini
_END

回复

使用道具 举报

20#
发表于 2022-11-5 16:42:52 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 15:40
更新了一下,放到 1楼

u启还是不成,
不过,你的diskpart外壳 2022.03.23 ver:1.27可以正确读出U盘信息
要不从这方面着手试试
回复

使用道具 举报

21#
发表于 2022-11-5 17:33:05 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 17:17
-------------------------------------------------------------------------
_SUB FINDFZ
REGI .HKLM ...

        IFEX %wzPath%,!
        {
            DISK %&drvx%,%RDISK%,2,1
            ENVI wzPath=%&drvx%\WEPE\WEPE.INI
        }

就是我U启时分配盘符的笨方法,
注册表找到是 DISK %&drvx%,2,4,1挂不上,
实际上是  DISK %&drvx%,2,2,1
回复

使用道具 举报

22#
发表于 2022-11-5 17:42:00 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 16:53
u启,是个啥启动结构?
把u盘量产成光盘了?格式化模拟了?还是 boot.wim 放在u盘,用启动器通过 ntload ...

用UltraISO,写入硬盘映像......,启动分区设置的隐藏



回复

使用道具 举报

23#
发表于 2022-11-5 18:11:13 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 18:03
保存下面 代码为  x.ini
用 pecmd 调用之,看看结果。 通过 偏移量看看,能否校准




回复

使用道具 举报

24#
发表于 2022-11-5 18:24:20 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 17:36
把红色部分删了

如下紫色部分 注意包括  }!

        FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
        ENVI wzPath=%STPATH%\WEPE\WEPE.INI
上面的就是找不到配置文件时,查找光驱文件用的

红色部分不能删,删了就找不到U启的启动盘了
而且,不但不分配U盘的盘符,却把我的ESP分区给分配盘符了
运行时,还是如图


回复

使用道具 举报

25#
发表于 2022-11-5 18:31:40 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 17:36
把红色部分删了

如下紫色部分 注意包括  }!

上个帖子没说明白,
REGI .HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&sso
forx * %&sso% ,&p0,
{
    envi &&item0=
    mstr &&item0=0,7,%&p0%
    Find $"%&item0%"="RDPATH=" ,
    {
        mstr &p0=8,0,%&p0%
        mstr -delims:\ value1=<1>%&p0%
    }
}
Find $"%value1%"<>"",
{
    sed *ni &str2=0,[()0123456789], ,%value1%
    mstr &type1=<3>%&str2%%
    ifex '%&type1%'='rdisk',
    {
        ……………………………………
    }!
        {
        FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
        ENVI wzPath=%STPATH%\WEPE\WEPE.INI
        }  
}



这部分如果分析注册表,发现是光驱启动,定位光驱盘符用的
回复

使用道具 举报

26#
发表于 2022-11-5 19:43:32 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 18:52
从 diskpart 的分析看,windows 没有把那个分区 视为一个可以分配盘符的卷,所以必然出现问题。

那个 ...

嗯,那我就还用我那个笨方法
    IFEX %wzPath%,!
    {
        CALL getNoDrv
        DISK %nodrv%,%RDISK%,2,1
        ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    }
回复

使用道具 举报

27#
发表于 2022-11-5 19:47:20 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-5 18:52
从 diskpart 的分析看,windows 没有把那个分区 视为一个可以分配盘符的卷,所以必然出现问题。

那个 ...

笨方法虽然不能面面俱到,但对我这个PE却管用,先不折腾了

//查找并分配外置所在的隐藏分区
IFEX %ProgramFiles%\WEPE.INI,ENVI wzPath=%ProgramFiles%\WEPE.INI!CALL FINDFZ
FDIR wimPath=%wzPath%

_SUB FINDFZ
REGI .HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&sso
    forx * %&sso% ,&p0,
    {
        envi &&item0=
        mstr &&item0=0,7,%&p0%
        Find $"%&item0%"="RDPATH=" ,
        {
            mstr RDISK=29,1,%&p0%
            mstr PARTITION=41,1,%&p0%
            mstr CDROM=23,5,%&p0%
        }
    }
FIND $%CDROM%=CDROM,!
{
    DISK ,%RDISK%,%PARTITION%,1
    CALL getNoDrv
    DISK  %nodrv%,%RDISK%,%PARTITION%,1
    ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    IFEX %wzPath%,!
    {
        CALL getNoDrv
        DISK %nodrv%,%RDISK%,2,1
        ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    }
}
IFEX %wzPath%,!
{
    FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
    ENVI wzPath=%STPATH%\WEPE\WEPE.INI
}
IFEX %wzPath%,!
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
IFEX %wzPath%,!
{
    SHOW -1:-1
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
EXEC =!CMD /C ECHO ENVI wzPath=%wzPath% > %temp%\wzPath.INI
_END

_SUB getNoDrv
    ENVI nodrv=
    IFEX W:,!ENVI nodrv=W:
    IFEX V:,!ENVI nodrv=V:
    IFEX T:,!ENVI nodrv=T:
    IFEX S:,!ENVI nodrv=S:
    IFEX R:,!ENVI nodrv=R:
    IFEX Q:,!ENVI nodrv=Q:
    IFEX P:,!ENVI nodrv=P:
    IFEX O:,!ENVI nodrv=O:
    IFEX N:,!ENVI nodrv=N:
    IFEX M:,!ENVI nodrv=M:
    IFEX L:,!ENVI nodrv=L:
    IFEX K:,!ENVI nodrv=K:
    IFEX G:,!ENVI nodrv=G:
    IFEX I:,!ENVI nodrv=I:
    IFEX H:,!ENVI nodrv=H:
    IFEX G:,!ENVI nodrv=G:
    IFEX F:,!ENVI nodrv=F:
    IFEX E:,!ENVI nodrv=E:
    IFEX D:,!ENVI nodrv=D:
    IFEX C:,!ENVI nodrv=C:
_END


回复

使用道具 举报

28#
发表于 2022-11-6 06:26:29 | 显示全部楼层
本帖最后由 D_M_GuYing 于 2022-11-6 07:31 编辑

   IFEX %wzPath%,!
    {
        CALL getNoDrv
        DISK %nodrv%,%RDISK%,2,1
        ENVI wzPath=%nodrv%\WEPE\WEPE.INI
    }

//搜索光驱,安装WinPE.CMD,这是我的PE光盘中独有的文件
IFEX %wzPath%,!
{
    FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
    ENVI wzPath=%STPATH%\WEPE\WEPE.INI
}
//搜索并挂载,如文件在隐藏分区,自动分配盘符
IFEX %wzPath%,!
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
//显示所有盘符,搜索定位
IFEX %wzPath%,!
{
    SHOW -1:-1
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}

我的笨方法,在红色部分已经分配盘符了,其后的搜索分区,挂载隐藏,显示所有,都还没有用到,挂载用的就是
DISK %nodrv%,%RDISK%,2,1
%RDISK%就是注册表读到的 2,也算是和注册表靠点边了
这是笨方法启动后的图


之后运行了boot.wim.Path-2.72,可是错把ESP分区给定位了,这就是逆向搜索的结果,
我笨方法的后三部分也就是这个原理,其实已经谈不上精确定位了
与依据注册表读取分析并正确解释的根本想法已经脱离了,逆向搜索已经不再依据注册表
你的“diskpart外壳 2022.03.23 ver:1.27”在盘符隐藏的时候就已经正确的定位了U启在2.2
那以此为依据,DISK参数就分配盘符了,这也算精确定位了,要比全盘搜索靠谱。
只是不知道在boot.wim.Path中怎么实现,说白了,就是把注册表读到的2.4,怎么精确转成2022.03.23 ver:1.27读到的2.2




点评

如果 pecmd 根本无法解析 那个错误的 Reg 信息呢? 可以先用 show -check -1:-1 把win能识别的分区都分配了盘符 ,包括 esp 然后,再 不能解析Reg时,再 show -1:-1 ,此时分配的盘符应该是 那些特殊的分区,  详情 回复 发表于 2022-11-6 11:08
难道 你的 \wepe\wepe64.wim 不在 esp 分区上么? 可能是因为 你的硬盘分区体系中有 多个 \wepe\wepe64.wim 分别在不同的硬盘上,而 show -1:-1 是把所有的 未挂载分区都挂上了,也不知道挂上的 哪一个分区是 指  详情 回复 发表于 2022-11-6 09:58
还有一个办法,就是针对相应 的第2硬盘 运行show 指令,然后判断多出来的盘符是否可用,如果可用,再用part 看一下他的分区号是否是 2.4,如果是,那再找一下文件,如果有那个文件,就对上了。  详情 回复 发表于 2022-11-6 08:50
回复

使用道具 举报

29#
发表于 2022-11-6 11:43:36 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-6 11:08
如果 pecmd 根本无法解析 那个错误的 Reg 信息呢?

可以先用 show -check -1:-1 把win能识别的分区都 ...

SHOW全部显示后
part -drv list volume  \ArcName\%value1%,&part_info
也读不到信息&part_info是空的
注册表上能读出来,
value1=MULTI(0)DISK(0)RDISK(2)PARTITION(4)
我下载新版看看
回复

使用道具 举报

30#
发表于 2022-11-6 11:51:26 | 显示全部楼层
dos时代菜鸟 发表于 2022-11-6 11:08
如果 pecmd 根本无法解析 那个错误的 Reg 信息呢?

可以先用 show -check -1:-1 把win能识别的分区都 ...

boot.wim.Path-2.73还是不行。

我先用着这个对付下,这已经很感谢了,


CALL FINDFZ
FDIR wimPath=%wzPath%

_SUB FINDFZ
REGI .HKLM\SYSTEM\CurrentControlSet\Control\SystemStartOptions,&sso
forx * %&sso% ,&p0,
{
    envi &&item0=
    mstr &&item0=0,7,%&p0%
    Find $"%&item0%"="RDPATH=" ,
    {
        mstr &p0=8,0,%&p0%            
        mstr -delims:\ value1=<1>%&p0%
    }
}
Find $"%value1%"<>"",
{  //注册表信息读取成功
    sed *ni &str2=0,[()0123456789], ,%value1%
    mstr &type1=<3>%&str2%%
    mstr RDISK=22,1,%value1%
    ifex '%&type1%'='cdrom',
    {  //如果是光驱启动,则查找光驱内标志性文件,获取配置文件所在的光驱盘符
        FORX !\Setup\安装WinPE.CMD,STPATH,1,FDRV STPATH=%STPATH%
        ENVI wzPath=%STPATH%\WEPE\WEPE.INI
    }!
    {  //如果不是光驱,就读取一下 分区信息,获取分区所在硬盘号,分区号,盘符
    part -drv list volume  \ArcName\%value1%,&part_info
    ifex '%&part_info%'<>'',
        {  //获取到了 路径对应的硬盘/分区/盘符 信息
            mstr &disk,&part,&ltr=<2><3><8>%&part_info%
            Find $"%&ltr%"="",
            {  //该卷没有被分配盘符立即分配
                fdrv -idlec &drvs=*:
                mstr &drvx=<1>%&drvs%
                DISK %&drvx%,%&disk%,%&part%,1
                ENVI wzPath=%&drvx%\WEPE\WEPE.INI
            }
        }!
        { //未知原因list volume没有获取到信息,尝试笨方法分配U启隐藏分区
            fdrv -idlec &drvs=*:
            mstr &drvx=<1>%&drvs%
            DISK %&drvx%,%RDISK%,2,1
            ENVI wzPath=%&drvx%\WEPE\WEPE.INI
        }
    }
}
IFEX %wzPath%,!
{
    MOUN !\WEPE\WEPE.INI,X:\a,1
    FILE X:\a
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
IFEX %wzPath%,!
{
    SHOW -1:-1
    fdrv &drvs=*:
    forx * %&drvs%,&drvx,
    {
        ifex ! %&drvx%\,subj -%&drvx%
    }
    FORX !\WEPE\WEPE.INI,fPath,1,ENVI wzPath=%fPath%
}
EXEC =!CMD /C ECHO ENVI wzPath=%wzPath% > %temp%\wzPath.INI
_END

点评

因为没有 你那个 磁盘环境,不能针对性的 编辑脚本,不知道 那个 分区 与其他分区的区别 可以通过什么来找出。 那个分区 居然可以被 pecmd 的 show -check 挂载。  详情 回复 发表于 2022-11-6 12:29
不要意思 刚上传的 缺了一个 引号, 会新上传一个。 但是为啥 新分配的特殊分区 没有意义呢?那上面 不能读取信息么?  详情 回复 发表于 2022-11-6 12:06
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-20 22:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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