标签 BCDEdit 下的文章

BCDEdit命令行增加WinPE启动项

在Windows 2000/XP/2003时代,系统采用NTLDR Boot Loader读取boot.ini文本文件的方法来读取系统启动项信息。Vista极其以后的系统采用Bootmgr读取BCD store的方式来读取启动项。BCD信息无法直接通过文本编辑器修改,因为它是一个二进制文件。我们可以通过微软自带的BCDEdit工具来修改、创建、删除启动项极其相关设置。

其实BCD文件就是一个注册表配置单元(registry hive)。可以用注册表管理器加载修改然后卸载。BCD里面的存储项用对象(objects)来分类。每一个对象的名称都是一个38位(包含'{'、'}'和四个'-')的GUID,类似于{02d8887d-7376-11e3-8968-c7419257e3c2}这样。 符号之间是32位16进制的数字。

BCD文件就是一个注册表配置单元(registry hive)

BCDEdit增加WinPE启动项命令行如下:

bcdedit.exe /create {GUID_RO} /device
bcdedit.exe /set {GUID_RO} ramdisksdidevice partition=c:
bcdedit.exe /set {GUID_RO} ramdisksdipath \tunps.com\boot.sdi

bcdedit.exe /create {GUID} /d "WinPE for tunps.com" /application OSLOADER
bcdedit.exe /set {GUID} device ramdisk=[c:]\tunps.com\winpe.wim,{GUID_RO}
bcdedit.exe /set {GUID} osdevice ramdisk=[c:]\tunps.com\winpe.wim,{GUID_RO}
bcdedit.exe /set {GUID} systemroot \windows
bcdedit.exe /set {GUID} detecthal yes
bcdedit.exe /set {GUID} winpe yes
bcdedit.exe /ems {GUID} OFF
bcdedit.exe /displayorder {GUID} /addlast
bcdedit.exe /default {GUID}
bcdedit.exe /timeout 10

首先需要创建一个ramdiskoptions的一个device,您可以直接/create {ramdiskoptions},但是{ramdiskoptions}一个bcd store里面只有一个,如果本机需要多个WinPE启动项就不适用了,所以建议使用/devcice。另外不知道是不是Windows的一个Bug,设置了ramdiskoptions的description之后,启动项将会变为ramdiskoptions的description,而不是启动项的description。所以建议不要设置ramdiskoptions的description

请将上面的{GUID_RO}和{GUID}设置为您需要的GUID识别符。如果没有,可以使用Windows SDK或者是Visual Studio自带的guidgen.exe工具生成的随机GUID。

删除的方法如下:

bcdedit.exe /delete {GUID_RO} /f 
bcdedit.exe /delete {GUID} /f

关于具体bcdedit的参数解释参见BCDedit_reff.docx