| 看看 |
| 感谢分享 !! |
| 感谢分享 |
chenmaochun 发表于 2017-3-15 22:23 本来想上传图片的,还得上传到别的网站....贴源码算了 //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:34 编辑 chenmaochun 发表于 2017-3-15 21:52 _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 可以试一下,我这边还没测试,应该没问题...这种适合简单情况,多硬盘看情况了,多硬盘必须把不要需要的分区取消激活和主分区...如果是多硬盘有引导分区和系统分区同时存在一个分区和两个分区的复杂情况,除了手动选择盘符外,别的基本没什么好办法,自动识别有点难 |
527104427 发表于 2017-11-26 18:51 确实修复了这个问题 |
527104427 发表于 2017-11-26 18:51 5帅又更新了,辛苦了。 |
|
老问题了,刚用cgi就试出来了。。 现在我是efi安装,要勾修复,bios的,不勾, 所以其实,解决访问就是cgi默认不要选中修复 |
| 老问题, 所以, 我不修复. |
| BIOS + mbr 为什么还会有100M隐藏引导分区? |
|
看来还是GHO通用,对于没有100M的来说 不过,也要琢磨备份成WIM。 用WINNTSETUP好像也能安装吧? |
chenmaochun 发表于 2017-4-21 17:46 谢谢。。。 下载试试。。。 |
yangguangtus 发表于 2017-4-21 16:33 用代码搜索主分区(GPT)或者主分区+活动分区,自动选择啊。这种一般不是100%准确,主要是双硬盘的情况下不准确。另外我自己写了一个安装软件,没有CGI修复引导这个BUG,你可以下载试用下。 |
|
本帖最后由 yangguangtus 于 2017-4-21 16:36 编辑 我用CGI装过多次系统,出现过不格式化系统分区的情况,不知道是不是BUG。 另外,请教楼主,在CGI编程中是如何实现自动选择系统分区的?系统分区指的是安装系统的分区。 |
| ddddddddddddd |
本帖最后由 chiannet 于 2017-3-17 13:15 编辑 chenmaochun 发表于 2017-3-16 20:12 一招制胜: 在windows 部署某阶段某批处理运行一次:“BCDEdit /timeout 0”,就看不到启动菜单了。给人的感觉就是直接引导Windows,不管你修复不修复。 理由: 1、还在使用 封装再部署型OS的人,根本就是不挑剔或不懂的人,别人给他/她装个啥玩意,他/她就用啥玩意,退一万步说,这也没啥恶意或明显的坏处。 2、实在有高级需求的用户,自己绝对也会编辑BCD,该删除的会自己删,不麻烦装机师傅操碎这个心。 |
frg521 发表于 2017-3-16 19:57 启动分区和系统分区不在一起的情况,你再通用也启动不了啊 |
frg521 发表于 2017-3-16 16:49 默认的菜单是通用的啊 |
chenmaochun 发表于 2017-3-16 15:37 额 我打算换DISM++试试。。。 |
jqrung 发表于 2017-3-16 14:07 删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相关代码,保留bootsect /nt60相关代码,这么做就不会产生2个菜单,坏处就是遇到有100M引导分区的电脑程序没法自动修复引导了 |
| 原来你也碰到了 ,我一直以为就我一个人有这个问题。 不过兄弟你现在咋解决这个问题的。 |
| CGI的老毛病.一直就这样.现在基本不用了.最强的就是WINNTSETUP |
| 我目前的做法是在BIOS + mbr的模式下删除了CGI.wcz中bcdboot C:\windows /s C: /f bios /l zh-cn该命令的相关代码,保留bootsect /nt60相关代码,这么做就不会产生2个菜单,坏处就是遇到有100M引导分区的电脑程序没法自动修复引导了,还好现在这种电脑不多,看到了也能手工进行处理,编程方面,我也只略懂皮毛,看代码勉强能看懂,修复BUG确实没那实力 |
| 看需要了,非bootmgr直接引导的情况下,一修复还乱套。bios情况,一般在PE下先用bootoce观察下写入MBR的引导程序是啥,再决定修复与否。或者手动用bootice写引导,编辑bcd,有时可能要提前准备boot.sdi等启动文件以备复制。多手动试几次,比直接用工具更有助于理解启动机制。 |
| 查阅了大量资料,做了大量实践,我现在基本可以确认是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文件 |
无厘尾 发表于 2017-3-15 21:37 我说的是在bios+mbr的模式下安装系统会出现,UEFI+GPT不会出现 |
| 把ESP分区 格式化 ( 可以在pe下***格 格了后一般是fat16格式) 然后你再CGI还原 恢复引导就不会有了 不用你那个长长的命令行 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.