1400700226 发表于 2017-2-5 07:39:17

初哥福利:怎样去掉Win10原版安装盘启动时的“Press any key to boot form CD”提示

本帖最后由 1400700226 于 2017-2-5 16:17 编辑

忽然发现现在各位大神的PE合盘ISO在EFI启动时基本都没有了“Press any key to boot form CD”提示,

但是原版的安装盘是有的。


于是我搜索了一下论坛,只找到了去掉BIOS启动时的“Press any key to boot form CD”提示的方法:

删除ISO里面的bootfix.bin(Win10的原版安装盘这个文件在\boot\下)。


可是关于如何去掉EFI模式下这个提示的方法,还真没找到。


于是我就研究了一下。

首先我找到了ISO内的\efi\microsoft\boot\下有

cdboot_noprompt.efi和efisys_noprompt.bin,

于是我首先将efisys_noprompt.bin从ISO里面解出来,尝试用UltrsISO加载引导文件将这个文件设为ISO的引导文件:




这样做确实UEFI下启动正常,提示没有了。

但是BIOS系启动不了了:




真TM囧。


想了想,这可能是UltraISO把ISO的BIOS启动段也给删除了。


于是我用WinImage打开这个Win10原版安装ISO,查看其引导扇区:




发现其引导有两个,于是基本可以确定一个是用于BIOS,另一个是用于EFI。


我将第一个引导导出,然后用7-Zip打开,发现打不开。这应该说明第一个是用于BIOS的(这个引导只有4KB,当然是用于BIOS的)。


于是我又将第二个引导导出,这个引导我发现有1.4MB大(与efisys_noprompt.bin体积相同),并且可以用7-Zip打开。


这个应该就是用于EFI启动的了。


现在问题就明确了:

我们只需要用efisys_noprompt.bin替换掉原ISO里面的那个用于EFI的引导就可以了。


怎么做呢?


首先我们用UltraISO将原版ISO内的所有文件删除(因为ISO格式保存时并未重新编码内部的文件,所以内部所有的文件都是以二进制方式直接保存的;由于efisys_noprompt.bin这个文件存在于ISO内,所以我们没法定位所需修改的文件头到底是用于EFI引导的这个文件的头还是ISO内的efisys_noprompt.bin文件的头)。




然后另存这个ISO:






然后,我们要用WinHex()这个Hex十六进制编辑工具打开删除掉所有内部文件的ISO:





选择另存的CENA_X64FREV_ZH-CN_DV5.iso并在WinHex打开后,我们看到的是这样的一幅画面:




对了,忘了一件事情。efisys_noprompt.bin就是微软提供的不会有“Press any key to boot form CD”提示的用于EFI的引导文件。

所以我们要将原版ISO里面的这个文件另存出来用:




然后我们再在WinHex里面打开这个文件,打开后看到的是这样的:





看着这个英文界面不要看晕了,因为我也已经看晕了。{:3_159:}


咳咳,我们要做的是将ISO里面的引导文件替换为efisys_noprompt.bin这个文件。


科普一下。不同类型的文件仅仅靠文件扩展名区分吗?显然不是。我们将压缩文件.zip文件重命名压缩文件.bmp,然后用画图打开这个压缩文件.bmp,也是打不开的。


这是为什么呢?我也不懂。。。{:3_159:}

但是我猜测,这有两种可能:


1:画图在打开压缩文件.bmp时,首先看了下这个文件的头。画图发现,这个文件的头不是.bmp文件的头,也不是.gif、.jpg文件的头(什么是文件头?你用WinHex打开多少.bmp文件。看看开头的那几行,你会发现所有的.bmp文件开头的那几行都是一样的,这就是文件头(注意,有些文件是没有头的或者它的头有偏移所以这么看开头找不到规律))。所以画图不会继续解码打开这个文件。


2:画图直接把这个压缩文件.bmp从头到尾看了一遍(尝试解码),结果没成功。所以打不开。


个人觉得,如果压缩文件.bmp特别巨大,那么第二种可能就显得不太有效率(等你半天你从头到尾看了一遍结果打不开我CNM)。

所以,第一种可能先判断文件头是比较合理的。


扯远了。如果你没晕的话,你应该知道ISO文件的用于EFI引导的文件,跟那个efisys_noprompt.bin,它们的头是一样的(因为UltraISO可以拿efisys_noprompt.bin作为新的引导且成功引导EFI了么,所以这个efisys_noprompt.bin跟ISO自带的引导文件是同一种文件类型)。


所以,我们怎么办呢?


首先,我们在WinHex的efisys_noprompt.bin选项卡下,从00000000那行的开头开始拖动,拖一行(拖太多或者太少都是不行的,因为区分一个文件头需要一定的长度,不然那么多文件类型他们的头不都重复了;拖太多会超出文件头部分):




然后我们在选中的部分上点右键,再点Edit,再选择Copy Block-再选择Hex Values(这种复制模式是直接二进制复制原始数据):



相信你已经看到了,这部可以直接选中后按Shift+Ctrl+C完成,哈哈!


然后我们切换到CENA_X64FREV_ZH-CN_DV5.iso选项卡:




然后,我们在WinHex的菜单栏选择Search-Find Hex Values.....(这步可以直接按Ctrl+Alt+X来实现):




然后我们在出现的窗口内的输入框中右键点粘贴(或者直接Ctrl+V):



然后点OK或者按Enter:




然后,我们发现,我们来到了ISO的用于EFI引导的引导文件的文件头:




既然微软给了我们efisys_noprompt.bin,那么这个文件应该就是直接可以替换原ISO内的用于EFI引导的引导文件的。


所以它们的大小应该是一样的(废话,前面不是用WinImage导出了第二个引导发现了它们一样大了么。。)。

所以,我们现在要做的是,将原ISO内的内的用于EFI引导的引导文件去掉,然后把efisys_noprompt.bin塞进去替换原有。


很可惜这步不能通过记事本的查找替换(Ctrl+H)功能实现(或许其他程序或者大神写的WHS脚本可以实现直接替换,但我不知道{:3_159:})。




所以我们现在怎么办呢?

首先,我们要知道原ISO内的内的用于EFI引导的引导文件的大小(前面用WinImage发现了它跟efisys_noprompt.bin一样大)。


efisys_noprompt.bin有多大?

我们切换到WinHex的efisys_noprompt.bin选项卡。然后把滚动条拉到最底下:





然后我们发现,这个efisys_noprompt.bin有00167FF0行:


这是十六进制,也就是Hex。

那这个数到底是什么呢?

我们点击WinHex上的Calculator图标:




然后计算器就会出现:




我们点击查看-科学型:




然后点击十六进制:



然后输入00167FF0:





然后点十进制:




是的。这个efisys_noprompt.bin有1474544行大。


但我这只是让你知道它在十进制有多少行,实际上这对这次我们要搞的没有用,所以我们切换回到十六进制:




然后我们回到WinHex,点击CENA_X64FREV_ZH-CN_DV5.iso选项卡:




我们发现,现在光标闪烁的那个地方,就是原ISO内的内的用于EFI引导的引导文件的开始。


然后,我们知道,原ISO内的内的用于EFI引导的引导文件体积与efisys_noprompt.bin是相同的,所以,原ISO内的内的用于EFI引导的引导文件的结尾所在行,也就是原ISO内的内的用于EFI引导的引导文件的开头所在行数加上efisys_noprompt.bin有多少行。


刚才我们看了,原ISO内的内的用于EFI引导的引导文件的开头所在行是83800,efisys_noprompt.bin有167FF0行,所以,


原ISO内的内的用于EFI引导的引导文件的结尾所在行就是83800加上167FF0。


这步不用我教了吧?在计算器内输入83800+167FF0:





计算结果是1EB7F0。

然后,我们回到WinHex,在菜单栏选择Navigation-Go To Offset(Alt+G):




然后输入1EB7F0,点OK:



然后我们就来到了这里:



对比一下efisys_noprompt.bin的结尾处:





都是0。啊哈,说明可能对了。


然后,我们在CENA_X64FREV_ZH-CN_DV5.iso选项卡下刚才到的1EB7F0行,在这行的最后一列点右键-End of block(Alt+2):





然后,我们再按Alt+G,输入刚才找到的ISO的用于EFI引导的引导文件的文件头的位置83800,然后点OK,我们就又来到了这里:





然后我们在83800行的第一列点右键-Beginning of block:





然后我们就发现,原ISO内的内的用于EFI引导的引导文件就被全部选中了应该:




然后,我们在选中的上面点右键-Edit-Remove(或直接按Delete键):



然后在出来的提示框里点Yes-OK,然后就这样了:




然后呢,我们切换到WinHex的efisys_noprompt.bin选项卡,然后直接按键盘上的Alt+A,然后按Shift+Ctrl+C:



然后切换到CENA_X64FREV_ZH-CN_DV5.iso选项卡,将闪烁的光标点在83800行的第一列:



然后按Ctrl+V,在出来的提示框点OK,然后就这样了:






到这里,文件的修改就基本完成了。我们点WinHex菜单栏的File-Save(或直接按Ctrl+S):



出来的提示框点OK。。


大功告成!去测试!

用UltraISO将原版ISO内的所有文件加进改好的ISO(注意别把bootfix.bin加进去了),然后开机测试:

你就会发现,不论BIOS还是EFI启动,“Press any key to boot form CD”提示都没有了!!!!!!


附上本例改好的Win10x64(cn_windows_10_enterprise_version_1607_updated_jul_2016_x64_dvd_9057083.iso)的空ISO文件:




祝大家成功!通宵写了这个教程!

论坛服务器比较囧,有些图片显示错了,编辑了几次帖子也弄不好,大家凑活看吧。。。









moran 发表于 2017-2-5 10:17:45

多谢分享。
请问这样修改后对开着安全引导的机子有没有影响?
我发现有小部分没有 “Press any key to boot form CD”提示的iso,在开着安全引导的机子上是起不来的。

2012bzsb 发表于 2017-2-5 10:36:49

其实没那么复杂,用微软自己的命令行制作ISO,
引导文件指定那个N 的即可. 同时删除那个BIN.

如果直接修改原版ISO, EFI部分已经写入ISO引导区了,当然就麻烦了.

另外,那个文件不过是一个软盘镜像,多个工具都可以打开修改.如果使用BOOT里面的替换BIN里面的,光盘根目录的几个文件也可以不用了,
如果3264都放里面,BIN2.88M,就可以自动选择3264的EFI

窄口牛 发表于 2017-2-5 08:29:33

大神威武

wangziqiang 发表于 2017-2-5 08:30:59

楼主辛苦了感谢感谢

szy106 发表于 2017-2-5 09:19:04

这钻研精神{:2_122:}

raymondxqm 发表于 2017-2-5 09:56:40

佩服楼主的钻研精神!

易广白 发表于 2017-2-5 10:03:25

大神!!威武!!
威武!!大神!!

tegl 发表于 2017-2-5 10:10:20

感谢分享宝贵经验

l3429900 发表于 2017-2-5 10:47:13

版主威武

devilma 发表于 2017-2-5 10:47:47

2012bzsb 发表于 2017-2-5 10:36
其实没那么复杂,用微软自己的命令行制作ISO,
引导文件指定那个N 的即可. 同时删除那个BIN.



没错!其实没那么复杂!!

moran 发表于 2017-2-5 11:13:50

devilma 发表于 2017-2-5 10:47
没错!其实没那么复杂!!

你是说用 oscdimg打包iso时候,引导文件指向 efisys_noprompt.bin
同时删除 efisys.bin,这样就行?
另外我要做UEFI和传统BIOS双起的iso,bootfix.bin也要删除吗?

moran 发表于 2017-2-5 11:15:56

2012bzsb 发表于 2017-2-5 10:36
其实没那么复杂,用微软自己的命令行制作ISO,
引导文件指定那个N 的即可. 同时删除那个BIN.



上面回复错了,两位大神,都看看我上面的问题吧。谢谢

1400700226 发表于 2017-2-5 15:55:46

moran 发表于 2017-2-5 10:17
多谢分享。
请问这样修改后对开着安全引导的机子有没有影响?
我发现有小部分没有 “Press any key to bo ...

个人感觉应该不会有问题的 。因为修改的都是官方的文件。

1400700226 发表于 2017-2-5 15:57:20

本帖最后由 1400700226 于 2017-2-5 15:58 编辑

2012bzsb 发表于 2017-2-5 10:36
其实没那么复杂,用微软自己的命令行制作ISO,
引导文件指定那个N 的即可. 同时删除那个BIN.



谢谢。这我肯定知道啦。微软给了bin文件当然不可能不给替换的方法啦。
最大光圈不可能让我们用Hex方式搞啦。

我只是说一下用WinHex换光盘引导的思路啦。哈哈,我写的一看就是给小白看的,大神就请略过吧~

1400700226 发表于 2017-2-5 16:03:40

2012bzsb 发表于 2017-2-5 10:36
其实没那么复杂,用微软自己的命令行制作ISO,
引导文件指定那个N 的即可. 同时删除那个BIN.



嘿,还是你有经验,还能x86 64都塞进去,有意思,等会看看~

rgy 发表于 2017-2-5 16:24:41

我也都试过,确实重新打包更方便。
WinHex整个汉化版的就更好了。

1400700226 发表于 2017-2-5 16:46:31

rgy 发表于 2017-2-5 16:24
我也都试过,确实重新打包更方便。
WinHex整个汉化版的就更好了。

嘿嘿。

WinHex的汉化版其实真的只是汉化版。。。而且各汉化水平参差不齐。。版本也不怎么对应。。所以错误繁多 。。


爱玛,其实官方的英文版错误也很多好吧。。毕竟德国人的软件

tapy 发表于 2017-2-5 19:26:23

实在佩服折腾精神!

2012adg3 发表于 2017-2-6 06:54:31

看着看着我就晕了。谢谢楼主。

gmsx 发表于 2017-2-6 09:43:39

做光盘用的上。

cycyc 发表于 2017-2-6 13:23:07

有的人保守,有的人分享。
赞楼主!

青青草 发表于 2017-2-6 15:14:10

无论如何,大神的钻研精神,值得学习!

cheong0hk 发表于 2017-2-7 09:26:57

楼主辛苦了感谢感谢

myBOOT 发表于 2017-2-7 12:22:40

这个提示有目的的,有些人CD放光驱里,就自动安装了。

zhxy9804 发表于 2017-2-9 22:21:20

首先支持楼主的研究精神,其次奉上本人整合的双启动光盘模版,
所有文件都是win10最新版本光盘提取的

1400700226 发表于 2017-2-9 22:24:21

zhxy9804 发表于 2017-2-9 22:21
首先支持楼主的研究精神,其次奉上本人整合的双启动光盘模版,
所有文件都是win10最新版本光盘提取的

感谢版主支持!

myBOOT 发表于 2017-3-5 12:46:00

LZ总结的不错。
其实oscdimg里的-bootdata就能指定各个引导选项呀。例如
-bootdata:2#p0,e,bEtfsboot.com#pEF,e,befisys_noprompt.bin

2013aygj1412 发表于 2017-3-5 13:37:18

不不得不佩服楼主,你是怎么想到这个思路的?

1400700226 发表于 2017-3-5 20:06:21

myBOOT 发表于 2017-3-5 12:46
LZ总结的不错。
其实oscdimg里的-bootdata就能指定各个引导选项呀。例如
-bootdata:2#p0,e,bEtfsboot.co ...

嘿嘿,谢谢,收藏!

我也是菜鸟,都一直在学习~没有认真研究过oscdimg。。。
页: [1] 2
查看完整版本: 初哥福利:怎样去掉Win10原版安装盘启动时的“Press any key to boot form CD”提示