无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5638|回复: 19
打印 上一主题 下一主题

[求助] 请帮忙解释下bcd文件中的一项内容

[复制链接]
跳转到指定楼层
1#
发表于 2016-6-14 11:31:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=S:
description             Windows Boot Manager
locale                  en-us
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
extendedinput           Yes
default                 {6551bc38-78d5-11df-bc90-c80aa9b084b8}
resumeobject            {6551bc37-78d5-11df-bc90-c80aa9b084b8}
displayorder            {6551bc38-78d5-11df-bc90-c80aa9b084b8}
                        {5294fec2-9af8-11dd-9fa0-f9e85e02c230}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 0
customactions           0x10000ba000001
                        0x54000001
custom:54000001         {572bcd55-ffa7-11d9-aae0-0007e994107d}
------------------------------------------------------------------------------------------------
上面最后三行是什么意思

customactions           0x10000ba000001
                        0x54000001
custom:54000001         {572bcd55-ffa7-11d9-aae0-0007e994107d}
2#
发表于 2016-6-14 13:13:19 | 只看该作者
custom actions 按字面理解就是“自定义引导行为”吧,
通过最后的自定义行为ID寻找自定义行为列表。

猜的

点评

谢谢回复 custom:54000001 {572bcd55-ffa7-11d9-aae0-0007e994107d} 这句明白了:自定义54000001键值,开机时按下这个被定义的键,就启动id为 {572bcd55-ffa7-11d9-aae0-0007e994107d}的启动项 ---------  详情 回复 发表于 2016-6-14 13:23
回复

使用道具 举报

3#
 楼主| 发表于 2016-6-14 13:23:09 | 只看该作者
lbw2007 发表于 2016-6-14 13:13
custom actions 按字面理解就是“自定义引导行为”吧,
通过最后的自定义行为ID寻找自定义行为列表。

谢谢回复
custom:54000001         {572bcd55-ffa7-11d9-aae0-0007e994107d}
这句明白了:自定义54000001键值,开机时按下这个被定义的键,就启动id为 {572bcd55-ffa7-11d9-aae0-0007e994107d}的启动项
--------------------------------------------------------------
customactions           0x10000ba000001
                              0x54000001

不知道0x10000ba000001是什么键的值

点评

极有可能是某个行为的二进制值。  详情 回复 发表于 2016-6-14 13:29
回复

使用道具 举报

4#
发表于 2016-6-14 13:29:19 | 只看该作者
yjqd 发表于 2016-6-14 13:23
谢谢回复
custom:54000001         {572bcd55-ffa7-11d9-aae0-0007e994107d}
这句明白了:自定义540000 ...

极有可能是某个行为的二进制值。

点评

上面是thinkpad的bcd文件部分信息 customactions 0x10000ba000001 这个难道是蓝键吗? 0x54000001 这个是F11键 开机时按蓝键和F11键一样效果,在bcd文件中是怎么  详情 回复 发表于 2016-6-14 13:34
回复

使用道具 举报

5#
 楼主| 发表于 2016-6-14 13:34:55 | 只看该作者
lbw2007 发表于 2016-6-14 13:29
极有可能是某个行为的二进制值。

上面是thinkpad的bcd文件部分信息
customactions           0x10000ba000001  这个难道是蓝键吗?
                              0x54000001    这个是F11键

开机时按蓝键和F11键一样效果,在bcd文件中是怎么关联的
回复

使用道具 举报

6#
发表于 2016-6-14 16:46:10 | 只看该作者
到这个层面上我也不会了。
0x10000ba000001 是一个13位的16进制数,应该就是你说的蓝键
而 0x54000001 是F11键
BCD把这些信息返回给bootmgr,然后bootmgr再返回给计算机绑定指定按键和事件?
求大神解惑……

点评

话说,这几天,我都在空闲时间研究bcdedit,希望有更深入的了解。但是,几天下来,发现这方面的资料真的好难找,百度,必应,谷歌一通找下来,竟然都是最基本的东西。就比如楼主这个,从微软找的好几个英文文档,也  详情 回复 发表于 2016-6-14 22:22
在http://bbs.pcbeta.com/viewthread-746906-1-1.html中找到一篇英文文章http://yangmingyu382.blog.163.com/blog/static/59383186201041082917312/ 翻译后: 3.创建描述OEM特定的恢复序列BCD元素。例如: bcde  详情 回复 发表于 2016-6-14 21:33
回复

使用道具 举报

7#
 楼主| 发表于 2016-6-14 21:33:09 | 只看该作者
lbw2007 发表于 2016-6-14 16:46
到这个层面上我也不会了。
0x10000ba000001 是一个13位的16进制数,应该就是你说的蓝键
而 0x54000001 是 ...

http://bbs.pcbeta.com/viewthread-746906-1-1.html中找到一篇英文文章http://yangmingyu382.blog.163.co ... 186201041082917312/
翻译后:
3.创建描述OEM特定的恢复序列BCD元素。例如:

bcdedit-集(集是set翻译成的){bootmgr的}自定义: 00000000 540000 YY {d2b69192-8f14-11da-a31f-ea816ab185e1}
哪里:
00000000 540000表示该元件是OEM定义,它描述了一个引导序列。
YY是一个OEM定义的值,不同的自定义操作进行了区分。对于第一个动作,使用1(00000000 54000001)。

4.创建BCD元素添加到启动管理对象的customactions元素。例如:
bcdedit-集{bootmgr的} customactions 0x00010000在SSSS 0001 0x00000000540000 YY
哪里:
0x00010000在SSSS 0001 是扫描代码与特定的OEM恢复序列相关联。
0x00000000540000 YY是在步骤3中描述的特定的OEM恢复序列中创建的元素。

由上可推测0x10000ba000001应该就是蓝键,0x54000001 不是F11键,照理说bcd增加了蓝键的扫描码,应该用普通的nt60主引导开机时按蓝键可以启动恢复的
因为bcd增加热键方法如下:
bcdedit /set {bootmgr} custom:0x54000001 {54b4c01f-dce0-102a-a4e0-462c07a00c5e}
bcdedit /set {bootmgr} customactions 0x1000044000001 0x54000001
bcdedit /timeout 1
上面是把F10键作为启动热键,F10键的扫描码为0x4400
把0x4400换成ba00,就是把蓝键作为热键,所以用普通的nt60主引导开机时按蓝键可以启动恢复的

但实际测试了不行(难道是不识别蓝键的扫描码,如果不识别又何必加入bcd中呢),F11键肯定不能用的,因为它的扫描码没增加到bcd文件中

还得用thinkapd的工具写主引导才行,写了主引导后,蓝键、F11键都可用,都是调用的同一个镜像文件,可能是把热键写入了mbr
-----------------------------------------------------------------------------------------------------------------------------------------------


回复

使用道具 举报

8#
发表于 2016-6-14 22:22:01 来自手机 | 只看该作者
lbw2007 发表于 2016-6-14 16:46
到这个层面上我也不会了。
0x10000ba000001 是一个13位的16进制数,应该就是你说的蓝键
而 0x54000001 是 ...

话说,这几天,我都在空闲时间研究bcdedit,希望有更深入的了解。但是,几天下来,发现这方面的资料真的好难找,百度,必应,谷歌一通找下来,竟然都是最基本的东西。就比如楼主这个,从微软找的好几个英文文档,也仅仅只有基本的介绍,没有什么价值意义……

点评

学习bcdedit比较好玩,但更详细的资料确实难找 另外,bcd增加热键、Reagentc增加热键、mbr增加热键不知你研究它们的不同没有 Reagentc /Setreimage /Path R:\Recovery\WindowsRE /bootkey 3b00  详情 回复 发表于 2016-6-14 22:50
回复

使用道具 举报

9#
 楼主| 发表于 2016-6-14 22:50:22 | 只看该作者
nttwqz 发表于 2016-6-14 22:22
话说,这几天,我都在空闲时间研究bcdedit,希望有更深入的了解。但是,几天下来,发现这方面的资料真的 ...

学习bcdedit比较好玩,但更详细的资料确实难找

另外,bcd增加热键、Reagentc增加热键、mbr增加热键不知你研究它们的不同没有

Reagentc /Setreimage /Path R:\Recovery\WindowsRE /bootkey 3b00

点评

你发表这个帖子之前我都不知道bcd竟然还可以自定义热键……  详情 回复 发表于 2016-6-14 22:58
回复

使用道具 举报

10#
发表于 2016-6-14 22:58:59 来自手机 | 只看该作者
yjqd 发表于 2016-6-14 22:50
学习bcdedit比较好玩,但更详细的资料确实难找

另外,bcd增加热键、Reagentc增加热键、mbr增加热键不 ...

你发表这个帖子之前我都不知道bcd竟然还可以自定义热键……
回复

使用道具 举报

11#
发表于 2016-6-15 11:40:34 | 只看该作者
感谢分享,真不知道还有这个功能
回复

使用道具 举报

12#
发表于 2016-6-15 11:40:45 | 只看该作者
本帖最后由 3ax31a 于 2016-6-15 11:42 编辑

感谢分享,真不知道还有这个功能,以直以为热键是bois设定的

点评

bcdedit /set {bootmgr} custom:0x54000001 {54b4c01f-dce0-102a-a4e0-462c07a00c5e} bcdedit /set {bootmgr} customactions 0x1000044000001 0x54000001 上面是把F10键作为启动热键,F10键的扫描码为0x4400  详情 回复 发表于 2016-6-15 13:03
回复

使用道具 举报

13#
 楼主| 发表于 2016-6-15 13:03:27 | 只看该作者
3ax31a 发表于 2016-6-15 11:40
感谢分享,真不知道还有这个功能,以直以为热键是bois设定的

bcdedit /set {bootmgr} custom:0x54000001 {54b4c01f-dce0-102a-a4e0-462c07a00c5e}
bcdedit /set {bootmgr} customactions 0x1000044000001 0x54000001

上面是把F10键作为启动热键,F10键的扫描码为0x4400

经测试,开机时按F10键确实能够启动标识为{54b4c01f-dce0-102a-a4e0-462c07a00c5e}的启动项

点评

能不能发表个帖子更详细的说明一下。  详情 回复 发表于 2016-6-15 19:51
回复

使用道具 举报

14#
发表于 2016-6-15 19:51:59 | 只看该作者
yjqd 发表于 2016-6-15 13:03
bcdedit /set {bootmgr} custom:0x54000001 {54b4c01f-dce0-102a-a4e0-462c07a00c5e}
bcdedit /set {boo ...

能不能发表个帖子更详细的说明一下。

点评

比如你的bcd只有一个win7启动项,你想增加一个启动项,这个启动项是win8pe(你也可把win8pe.wim放入隐藏分区),假设你的磁盘有三个分区,C、D、E,这里以放在可见分区E盘为例 开机时按F10键启动win8pe @echo of  详情 回复 发表于 2016-6-15 23:06
回复

使用道具 举报

15#
 楼主| 发表于 2016-6-15 23:06:43 | 只看该作者
本帖最后由 yjqd 于 2016-6-15 23:08 编辑
nttwqz 发表于 2016-6-15 19:51
能不能发表个帖子更详细的说明一下。


比如你的bcd只有一个win7启动项,你想增加一个启动项,这个启动项是win8pe(你也可把win8pe.wim放入隐藏分区),假设你的磁盘有三个分区,C、D、E,这里以放在可见分区E盘为例
开机时按F10键启动win8pe

把bcd文件拷贝出来和下面的批处理放在一起

@echo off
cd /d %~dp0

if /i exist bcdedit.exe (set num=3) else set num=2

echo ==================================================================>nul
echo 创建虚拟磁盘
bcdedit /store "%cd%"\BCD /create {ramdiskoptions} /d "Win8PE"
bcdedit /store "%cd%"\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store "%cd%"\BCD /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi


echo 启动E:\winpe.wim配置
echo ==================================================================>nul
for /f "tokens=%num% delims= " %%a in ('bcdedit /store "%cd%"\BCD /create /d "Win8PE" /application osloader') do (set win8pe=%%a)
echo %win8pe%
bcdedit /store "%cd%"\BCD /set "%win8pe%" device ramdisk=[\Device\HarddiskVolume3]\win8pe.wim,{ramdiskoptions}
bcdedit /store "%cd%"\BCD /set "%win8pe%" path \windows\system32\boot\winload.exe
bcdedit /store "%cd%"\BCD /set "%win8pe%" description "Win8PE"
bcdedit /store "%cd%"\BCD /set "%win8pe%" locale "zh-CN"
bcdedit /store "%cd%"\BCD /set "%win8pe%" osdevice ramdisk=[\Device\HarddiskVolume3]\win8pe.wim,{ramdiskoptions}
bcdedit /store "%cd%"\BCD /set "%win8pe%" systemroot "\windows"
bcdedit /store "%cd%"\BCD /set "%win8pe%" nx "OptIn"
bcdedit /store "%cd%"\BCD /set "%win8pe%" winpe "yes"
bcdedit /store "%cd%"\BCD /set "%win8pe%" detecthal "yes"
bcdedit /store "%cd%"\BCD /displayorder "%win8pe%" /addlast

bcdedit  /store "%cd%"\BCD /set {bootmgr} timeout "5"
bcdedit  /store "%cd%"\BCD /set {bootmgr} customactions "0x1000044000001" "0x54000001"
bcdedit  /store "%cd%"\BCD /set {bootmgr} custom:54000001 "%win8pe%"

点评

我不是让你都怎么添加WinPE到启动菜单的帖子,这个批处理我也会,我是让你说说关于自定义方面的内容, 话说,这一句好像没必要啊,bcdedit应该都是 tokens=2啊?  详情 回复 发表于 2016-6-16 12:46

评分

参与人数 1无忧币 +5 收起 理由
3ax31a + 5 赞一个!

查看全部评分

回复

使用道具 举报

16#
发表于 2016-6-16 12:46:19 来自手机 | 只看该作者
yjqd 发表于 2016-6-15 23:06
比如你的bcd只有一个win7启动项,你想增加一个启动项,这个启动项是win8pe(你也可把win8pe.wim放入隐 ...

我不是让你都怎么添加WinPE到启动菜单的帖子,这个批处理我也会,我是让你说说关于自定义方面的内容,

话说,
if /i exist bcdedit.exe (set num=3) else set num=2
这一句好像没必要啊,bcdedit应该都是 tokens=2啊?

点评

自定义方面的内容我只会: customactions "0x1000044000001" "0x54000001" custom:54000001 前面的帖子是我在问自定义方面的知识,不是我知道很多自定义的知识 -----------------------------------------------  详情 回复 发表于 2016-6-16 17:17
回复

使用道具 举报

17#
 楼主| 发表于 2016-6-16 17:17:29 | 只看该作者
nttwqz 发表于 2016-6-16 12:46
我不是让你都怎么添加WinPE到启动菜单的帖子,这个批处理我也会,我是让你说说关于自定义方面的内容,

...

自定义方面的内容我只会:
customactions "0x1000044000001" "0x54000001"
custom:54000001
前面的帖子是我在问自定义方面的知识,不是我知道很多自定义的知识
------------------------------------------------------------------------
if /i exist bcdedit.exe (set num=3) else set num=2
如果批处理目录下有bcdedit.exe,系统32下也有bcdedit.exe,需要上面的命令,因为批处理结果会出现英文,那么 tokens=的值会变

点评

好吧,你连英文的情况也考虑了,多到时没想那么多。 不过这样,要根目录下要有bcdedit文件,不太方便,不如用老办法。 for /f "tokens=2 delims={" %%a in ('bcdedit /create /application osloader') do set  详情 回复 发表于 2016-6-16 20:37
回复

使用道具 举报

18#
发表于 2016-6-16 20:37:23 | 只看该作者
yjqd 发表于 2016-6-16 17:17
自定义方面的内容我只会:
customactions "0x1000044000001" "0x54000001"
custom:54000001

好吧,你连英文的情况也考虑了,多到时没想那么多。

不过这样,要根目录下要有bcdedit文件,不太方便,不如用老办法。

for /f "tokens=2 delims={" %%a in ('bcdedit /create /application osloader') do set id=%%a
set id={%id:~0,37%
rem 上面也可以这么写,方便看。set id={%id:~0,36%}
echo %id%

点评

还是你对批处理更熟悉一些,花括号这种写法我还没学习过 有些问题我是自己一边求助,一边也在网上搜索相关的知识,"运气"好也就搜索到了,"运气"不好花的时间就多了 我这篇帖子主要是问bcd自定义键的用法,另一  详情 回复 发表于 2016-6-16 21:34
回复

使用道具 举报

19#
 楼主| 发表于 2016-6-16 21:34:52 | 只看该作者
nttwqz 发表于 2016-6-16 20:37
好吧,你连英文的情况也考虑了,多到时没想那么多。

不过这样,要根目录下要有bcdedit文件,不太方便 ...

还是你对批处理更熟悉一些,花括号这种写法我还没学习过
有些问题我是自己一边求助,一边也在网上搜索相关的知识,"运气"好也就搜索到了,"运气"不好花的时间就多了

我这篇帖子主要是问bcd自定义键的用法,另一个问题是thinkpad的蓝键问题,它可能是和主引导mbr有关(它有专用的程序写主引导),大概是常听说的把什么什么写主mbr,只是想大概了解原理,深层次的也不想去折腾

点评

话说,我刚才试了,即使照着你的设置,也不会生效,不知为何,我Win8.1 64位,UEFI启动。 后来试了U盘中的Win7PE,成功将F6和F7设置成了启动列表中的WinPE和DOS的快捷键。  详情 回复 发表于 2016-6-17 01:20
回复

使用道具 举报

20#
发表于 2016-6-17 01:20:07 来自手机 | 只看该作者
yjqd 发表于 2016-6-16 21:34
还是你对批处理更熟悉一些,花括号这种写法我还没学习过
有些问题我是自己一边求助,一边也在网上搜索相 ...

话说,我刚才试了,即使照着你的设置,也不会生效,不知为何,我Win8.1 64位,UEFI启动。

后来试了U盘中的Win7PE,成功将F6和F7设置成了启动列表中的WinPE和DOS的快捷键。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-11 00:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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