无忧启动论坛

 找回密码
 注册
搜索

CGI还原wim文件到电脑,修复引导会出现引导菜单

查看数: 28392 | 评论数: 35 | 收藏 4
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-3-15 19:48

正文摘要:

CGI还原wim文件到电脑,修复引导会出现引导菜单,也就是重启后会出现2个windows7的菜单,等待30秒,不管选择哪一个都可以启动,我自己实验了下,用CGI恢复影像不修复引导,就不会出现2个菜单的现象.然后我手动运行bc ...

回复

sdb5168 发表于 2 小时前
看看
2012KFC 发表于 2025-10-12 10:55:12
感谢分享 !!
lzzltx 发表于 2025-9-24 08:54:45
感谢分享
jbz85 发表于 2025-9-18 01:29:05
chenmaochun 发表于 2017-3-15 22:23
我目前的做法是在BIOS + mbr的模式下删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相 ...

本来想上传图片的,还得上传到别的网站....贴源码算了
//WIM/ESD还原-修复引导-获取激活系统的分区
_SUB GetActivePartition
    TEAM ENVI &&vln=|ENVI &&A1=|ENVI &&A2=|ENVI &&A9=|ENVI &&E1=|ENVI &&E2=
    FORX *NL &vFORM,&vln,
     {
      MSTR* &A1,&A2,&A9=<1><2><9>%&vln%
      IFEX $%&A9% = 1,
       {
        LPOS &E1=:,1,%&A1%
        CALC #&E1 = %&E1% - 1
        LSTR &E2=%&E1%,%&A1%
        IFEX $%&E2% = %&TDrvNum%, TEAM ENVI &ActiveDrv=%&A2%|EXIT _SUB
       }
     }
_END

//WIM/ESD还原-开始修复Win7/8/10/11系统Boot引导
_SUB FixMBRBCD
     //如果硬盘MBR分区时划分引导分区和系统分区两个分区,则引导分区必定是活动分区,系统分区不是活动分区才能引导系统启动
     //判定还原时选择的盘符与活动分区是否一致,一致则表示引导和系统在一个分区, 不一致则表示引导和系统在不同分区
     //引导文件和系统文件在<同一个分区>时执行
     FIND $%&PARTSEL2%=%&ActiveDrv%,!
      {
       EXEC =!BOOTSECT.EXE /nt60 %&ActiveDrv%
       EXIT _SUB
      }
     //引导文件和系统文件在<不同分区>时执行
     FIND $%&PARTSEL2%=%&ActiveDrv%,!
      {
       EXEC =!BCDBOOT.EXE %&PARTSEL2%\Windows /s %&ActiveDrv% /f BIOS /l zh-CN
       EXEC =!BOOTSECT.EXE /nt60 %&ActiveDrv%
       EXIT _SUB
      }
_END

jbz85 发表于 2025-9-18 01:24:51
本帖最后由 jbz85 于 2025-9-18 01:34 编辑
chenmaochun 发表于 2017-3-15 21:52
查阅了大量资料,做了大量实践,我现在基本可以确认是CGI的一个BUG了,因为CGI在BIOS+mbr的情况下,修复引 ...

_SUB FixMBRBCD
     //如果硬盘MBR分区时划分引导分区和系统分区两个分区,则引导分区必定是活动分区,系统分区不是活动分区才能引导系统启动
     //判定还原时选择的盘符与活动分区是否一致,一致则表示引导和系统在一个分区, 不一致则表示引导和系统在不同分区
     //引导文件和系统文件在<同一个分区>时执行
     FIND $%&PARTSEL2%=%&ActiveDrv%,!
      {
       EXEC =!BOOTSECT.EXE /nt60 %&ActiveDrv%
       EXIT _SUB
      }
     //引导文件和系统文件在<不同分区>时执行
     FIND $%&PARTSEL2%=%&ActiveDrv%,!
      {
       EXEC =!BCDBOOT.EXE %&PARTSEL2%\Windows /s %&ActiveDrv% /f BIOS /l zh-CN
       EXEC =!BOOTSECT.EXE /nt60 %&ActiveDrv%
       EXIT _SUB
      }
_END
可以试一下,我这边还没测试,应该没问题...这种适合简单情况,多硬盘看情况了,多硬盘必须把不要需要的分区取消激活和主分区...如果是多硬盘有引导分区和系统分区同时存在一个分区和两个分区的复杂情况,除了手动选择盘符外,别的基本没什么好办法,自动识别有点难
chenmaochun 发表于 2017-12-5 19:25:27
527104427 发表于 2017-11-26 18:51
试试这个:

http://blog.sina.com.cn/s/blog_6fd804fe0102wtow.html

确实修复了这个问题
2012zhd 发表于 2017-11-26 21:20:35
527104427 发表于 2017-11-26 18:51
试试这个:

http://blog.sina.com.cn/s/blog_6fd804fe0102wtow.html

5帅又更新了,辛苦了。
527104427 发表于 2017-11-26 18:51:07

点评

确实修复了这个问题  详情 回复 发表于 2017-12-5 19:25
5帅又更新了,辛苦了。  详情 回复 发表于 2017-11-26 21:20
江南一根葱 发表于 2017-8-27 18:33:12
老问题了,刚用cgi就试出来了。。
现在我是efi安装,要勾修复,bios的,不勾,
所以其实,解决访问就是cgi默认不要选中修复
vaf 发表于 2017-8-22 22:07:02
老问题, 所以, 我不修复.
linkin129 发表于 2017-8-22 20:57:34
BIOS + mbr 为什么还会有100M隐藏引导分区?
jmjmbj 发表于 2017-8-21 22:32:10
看来还是GHO通用,对于没有100M的来说

不过,也要琢磨备份成WIM。 用WINNTSETUP好像也能安装吧?
yangguangtus 发表于 2017-4-21 18:05:02
chenmaochun 发表于 2017-4-21 17:46
用代码搜索主分区(GPT)或者主分区+活动分区,自动选择啊。这种一般不是100%准确,主要是双硬盘的情况下 ...

谢谢。。。
下载试试。。。
chenmaochun 发表于 2017-4-21 17:46:35
yangguangtus 发表于 2017-4-21 16:33
我用CGI装过多次系统,出现过不格式化系统分区的情况,不知道是不是BUG。

另外,请教楼主,在CGI编程中 ...

用代码搜索主分区(GPT)或者主分区+活动分区,自动选择啊。这种一般不是100%准确,主要是双硬盘的情况下不准确。另外我自己写了一个安装软件,没有CGI修复引导这个BUG,你可以下载试用下。

点评

谢谢。。。 下载试试。。。  详情 回复 发表于 2017-4-21 18:05
yangguangtus 发表于 2017-4-21 16:33:34
本帖最后由 yangguangtus 于 2017-4-21 16:36 编辑

我用CGI装过多次系统,出现过不格式化系统分区的情况,不知道是不是BUG。

另外,请教楼主,在CGI编程中是如何实现自动选择系统分区的?系统分区指的是安装系统的分区。

点评

用代码搜索主分区(GPT)或者主分区+活动分区,自动选择啊。这种一般不是100%准确,主要是双硬盘的情况下不准确。另外我自己写了一个安装软件,没有CGI修复引导这个BUG,你可以下载试用下。  详情 回复 发表于 2017-4-21 17:46
weichushu 发表于 2017-3-20 14:59:50
ddddddddddddd
chiannet 发表于 2017-3-17 13:12:48
本帖最后由 chiannet 于 2017-3-17 13:15 编辑
chenmaochun 发表于 2017-3-16 20:12
启动分区和系统分区不在一起的情况,你再通用也启动不了啊


一招制胜:

在windows 部署某阶段某批处理运行一次:“BCDEdit /timeout 0”,就看不到启动菜单了。给人的感觉就是直接引导Windows,不管你修复不修复。

理由:

1、还在使用 封装再部署型OS的人,根本就是不挑剔或不懂的人,别人给他/她装个啥玩意,他/她就用啥玩意,退一万步说,这也没啥恶意或明显的坏处。

2、实在有高级需求的用户,自己绝对也会编辑BCD,该删除的会自己删,不麻烦装机师傅操碎这个心。
chenmaochun 发表于 2017-3-16 20:12:05
frg521 发表于 2017-3-16 19:57
如果通用那你还怕100M?
说明只是能启动bcd所在盘系统

启动分区和系统分区不在一起的情况,你再通用也启动不了啊

点评

一招制胜: 在windows 7 部署某阶段某批处理运行一次:“BCDEdit /timeout 0”,就看不到启动菜单了。给人的感觉就是直接引导Windows,不管你修复不修复。 理由: 1、还在使用 封装再部署型OS的人,根本就  详情 回复 发表于 2017-3-17 13:12
chenmaochun 发表于 2017-3-16 19:46:27
frg521 发表于 2017-3-16 16:49
修复前删除所有菜单,不就可以放心修复了?反正你只要一个功能,就是添加nt6菜单,但是你要安到vhd虚拟硬盘 ...

默认的菜单是通用的啊
jqrung 发表于 2017-3-16 17:04:19
chenmaochun 发表于 2017-3-16 15:37
删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相关代码,保留bootsect /nt60相关代 ...

额 我打算换DISM++试试。。。
chenmaochun 发表于 2017-3-16 15:37:19
jqrung 发表于 2017-3-16 14:07
原来你也碰到了 ,我一直以为就我一个人有这个问题。 不过兄弟你现在咋解决这个问题的。

删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相关代码,保留bootsect /nt60相关代码,这么做就不会产生2个菜单,坏处就是遇到有100M引导分区的电脑程序没法自动修复引导了

点评

额 我打算换DISM++试试。。。  详情 回复 发表于 2017-3-16 17:04
jqrung 发表于 2017-3-16 14:07:01
原来你也碰到了 ,我一直以为就我一个人有这个问题。 不过兄弟你现在咋解决这个问题的。

点评

删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相关代码,保留bootsect /nt60相关代码,这么做就不会产生2个菜单,坏处就是遇到有100M引导分区的电脑程序没法自动修复引导了  详情 回复 发表于 2017-3-16 15:37
SGZOU 发表于 2017-3-16 13:58:22
CGI的老毛病.一直就这样.现在基本不用了.最强的就是WINNTSETUP
chenmaochun 发表于 2017-3-15 22:23:24
我目前的做法是在BIOS + mbr的模式下删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相关代码,保留bootsect /nt60相关代码,这么做就不会产生2个菜单,坏处就是遇到有100M引导分区的电脑程序没法自动修复引导了,还好现在这种电脑不多,看到了也能手工进行处理,编程方面,我也只略懂皮毛,看代码勉强能看懂,修复BUG确实没那实力

点评

本来想上传图片的,还得上传到别的网站....贴源码算了 //WIM/ESD还原-修复引导-获取激活系统的分区 _SUB GetActivePartition TEAM ENVI &&vln=|ENVI &&A1=|ENVI &&A2=|ENVI &&A9=|ENVI &&E1=|ENVI &&E2=  详情 回复 发表于 2025-9-18 01:29
俊采星驰 发表于 2017-3-15 22:17:39
看需要了,非bootmgr直接引导的情况下,一修复还乱套。bios情况,一般在PE下先用bootoce观察下写入MBR的引导程序是啥,再决定修复与否。或者手动用bootice写引导,编辑bcd,有时可能要提前准备boot.sdi等启动文件以备复制。多手动试几次,比直接用工具更有助于理解启动机制。
chenmaochun 发表于 2017-3-15 21:52:08
查阅了大量资料,做了大量实践,我现在基本可以确认是CGI的一个BUG了,因为CGI在BIOS+mbr的情况下,修复引导是粗暴的执行了bcdboot C:\windows /s C: /f bios /l zh-cn和bootsect /nt60两个命令(我看了开源的代码,里面确实是执行的这两个命令),他没有判断分区里面是否有100M隐藏分区,实际上有100M 隐藏分区的话,还是得执行两个命令才行,如果没有隐藏分区的话,则只需要执行bootsect /nt60就行了,我没有勾选自动修复引导,也能成功引导,是因为那个计算机以前就是安装的WIN7系统,如果原来系统是XP的话,装了WIN7,没有执行bootsect /nt60这个的话,应该也是不能引导的。个人能力有限,修复不了这个BUG,不知道有没有大大能够给出修复后的CGI.wcz文件

点评

_SUB FixMBRBCD //如果硬盘MBR分区时划分引导分区和系统分区两个分区,则引导分区必定是活动分区,系统分区不是活动分区才能引导系统启动 //判定还原时选择的盘符与活动分区是否一致,一致则表示引导和系统  详情 回复 发表于 2025-9-18 01:24
chenmaochun 发表于 2017-3-15 21:38:53
无厘尾 发表于 2017-3-15 21:37
把ESP分区 格式化    ( 可以在pe下***格 格了后一般是fat16格式)    然后你再CGI还原 恢复引导就不会有了 ...

我说的是在bios+mbr的模式下安装系统会出现,UEFI+GPT不会出现
无厘尾 发表于 2017-3-15 21:37:01
把ESP分区 格式化    ( 可以在pe下***格 格了后一般是fat16格式)    然后你再CGI还原 恢复引导就不会有了   不用你那个长长的命令行

点评

我说的是在bios+mbr的模式下安装系统会出现,UEFI+GPT不会出现  详情 回复 发表于 2017-3-15 21:38

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

闽公网安备 35020302032614号

GMT+8, 2025-10-28 18:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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