无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
查看: 34505|回复: 8

[教程] 彻底删除UEFI启动项的方法(对付多余/重复启动项)

  [复制链接]
发表于 2014-11-30 12:33:43 | 显示全部楼层 |阅读模式
本帖最后由 2011qq517025464 于 2015-1-11 12:55 编辑

可能是我没配置好,上次我使用refind引导器后,生成了重复的引导项
严重时机器会无法开机,我拔了电池(笔记本电脑),静置一会,又按了几次电源键,莫名其妙地恢复了
用了多次bcdedit /import也可能会出现这种情况

尝试过用bcdedit /delete删,好像没删掉,用easyuefi看是隐藏
easyuefi在我的机器上经常卡死,而且狂写硬盘

后来找到了这个才解决:
http://technet.microsoft.com/en-us/library/cc749510.aspx
简单说就是先export,再对export出来的文件处理,删掉多余的启动项,再/import /clean(一定要有clean开关,清除原来的启动项,否则就没意义了)导入回去

我大致翻译一下吧(原文出现savebcd和newbcd两个文件名,export导出到savebcd,然后拷贝为newbcd,其实可以是一个文件,我给改过来了):
1.检查是否有多余的启动项:
用管理员权限的cmd运行
Bcdedit /enum firmware
我这里出现了很长的列表,而且都是重复的
用了多次bcdedit /import也可能会出现这种情况

2.保存现在的所有引导项
Bcdedit /export savebcd
savebcd是导出的文件名
如果想备份原来的bcd,就在这时把savebcd拷贝一份

3.列出引导项,制作删除启动项的批处理
Bcdedit /enum firmware > enumfw.txt
这条命令把UEFI引导项列出,写入enumfw.txt
然后,原文没有说具体操作,但是我们可以用记事本替换的方法生成命令列表
不包含GUID({}里的就是GUID)的行前面加上REM
包含的,用替换变成如下形式:
Bcdedit /store savebcd /delete {93cee840-f524-11db-af62-aa767141e6b3}
注意挑选,别把所有的启动项都删了!我们只是要删掉多余的!

4.复制到cmd里运行,在导出的savebcd文件中删除多余的引导项
到这里还没有进行真正的清理操作!

5.导入处理好的savebcd文件
Bcdedit /import savebcd /clean
注意/clean开关,有了它才可以清除掉原来的启动项。
发表于 2015-4-17 21:33:40 | 显示全部楼层
http://technet.microsoft.com/en-us/library/cc749510.aspx
翻译的结果:
----------------------------------------------------------------------------------------------
删除 BCD 和 NVRAM 中的重复固件对象

0(共 1)对本文的评价是有帮助 - 评价此主题
应用到: Windows Vista
在某些基于统一可扩展固件接口 (UEFI) 的计算机上,固件会在计算机启动时为本地设备(如 CD-ROM 或硬盘驱动器)创建稳定随机存取内存 (NVRAM) 项。Bcdedit 会将 NVRAM 中的固件命名空间对象与系统启动配置数据 (BCD) 同步。当您执行 bcdedit /set 或 /enum 命令时,Bcdedit 会打开系统 BCD 存储。当 bcdedit 打开 BCD 时,它将 NVRAM 中的项与 BCD 中的项进行比较。如果 NVRAM 中由固件创建的项在 BCD 中不存在,则将它们添加到系统 BCD。当 bcdedit 关闭系统 BCD 时,BCD 中包含的但 NVRAM 中不存在的任何启动管理器项将被添加到 NVRAM。bcdedit /import 命令可将所有固件命名空间对象从系统 BCD 复制到 NVRAM 中。
如果执行多次 bcdedit /import 操作,则 NVRAM 可能包含系统上设备(如 CD ROM 和硬盘)的多个项。多次 /import 操作可能会导致许多重复项。以下命令用于枚举 BCD 中的固件命名空间对象:
Bcdedit /enum firmware
以下示例类似于 bcdedit /enum 固件命令的输出:
Firmware Boot Manager
---------------------
identifier              {fwbootmgr}
displayorder            {bootmgr}
{93cee840-f524-11db-af62-aa767141e6b3}
{93cee841-f524-11db-af62-aa767141e6b3}
{93cee842-f524-11db-af62-aa767141e6b3}
{93cee844-f524-11db-af62-aa767141e6b3}
{93cee843-f524-11db-af62-aa767141e6b3}
timeout                 2

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Firmware Application (101fffff)
-------------------------------
identifier              {93cee840-f524-11db-af62-aa767141e6b3}
description             Primary Master CDROM

Firmware Application (101fffff)
-------------------------------
identifier              {93cee841-f524-11db-af62-aa767141e6b3}
description             Harddisk 4

Firmware Application (101fffff)
-------------------------------
identifier              {93cee842-f524-11db-af62-aa767141e6b3}
description             Internal EFI Shell

Firmware Application (101fffff)
-------------------------------
identifier              {93cee843-f524-11db-af62-aa767141e6b3}
description             Floppy

Firmware Application (101fffff)
-------------------------------
identifier              {93cee844-f524-11db-af62-aa767141e6b3}
description             Acpi(PNP0A03,0)/Pci(1F|1)/Ata(Primary,Master)/CDROM(Entry1)
如果多次使用 bcdedit /import,则 NVRAM 和系统 BCD 中可能存在多个固件对象。如果将 BCD 存储从主计算机导入到目标计算机,则同一设备可能存在多个固件项。如果存在多个固件项,则看到的 bcdedit /enum 固件输出将包含与以下示例类似的固件项:
Firmware Boot Manager
---------------------
identifier              {fwbootmgr}
displayorder            {bootmgr}
{93cee840-f524-11db-af62-aa767141e6b3}
{93cee841-f524-11db-af62-aa767141e6b3}
{93cee842-f524-11db-af62-aa767141e6b3}
{93cee844-f524-11db-af62-aa767141e6b3}
{93cee843-f524-11db-af62-aa767141e6b3}
{8b87c5a0-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a1-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a2-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a3-f2f2-11db-9717-f87ee6ea6002}
{8b87c5a4-f2f2-11db-9717-f87ee6ea6002}
timeout                 2
每个设备可能存在具有不同 GUID 的两个或多个项。例如,Primary Master CDROM 可能包括多个项:
Firmware Application (101fffff)
-------------------------------
identifier              {93cee840-f524-11db-af62-aa767141e6b3}
description             Primary Master CDROM

Firmware Application (101fffff)
-------------------------------
identifier              {8b87c5a0-f2f2-11db-9717-f87ee6ea6002}
description             Primary Master CDROM
通过使用多个 Bcdedit 命令,可以删除 NVRAM 和 BCD 系统存储中的多个项或重复项。若要对您希望删除的多个对象项使用正确的对象 GUID,则可能需要手动创建命令脚本。
删除重复项
通过使用以下 Bcdedit 命令,保存当前系统存储的副本:

Bcdedit /export savebcd
稍后可以使用此文件以用于恢复目的。

制作 SaveBCD 文件的副本以用于 Bcdedit 删除操作:

Copy savebcd newbcd
枚举系统 BCD 存储中的固件命名空间对象,并将输出结果保存到文本文件:

Bcdedit /enum firmware > enumfw.txt
使用 Notepad.exe 打开 Enumfw.txt,以查看要删除的重复 GUID 项的列表。查看计算机上的 GUID 项的列表。

使用记事本创建新命令文件。将该文件另存为 RemoveDups.cmd。

在 RemoveDups.cmd 文件中添加一个命令行,以删除固件启动管理器显示顺序下列出的重复固件 GUID:

Bcdedit /store newbcd /delete {93cee840-f524-11db-af62-aa767141e6b3}
对要删除的每个 GUID 重复该命令。对于上述示例,将以下命令添加到 RemoveDups.cmd:

Bcdedit /store newbcd /delete {93cee841-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {93cee842-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {93cee843-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {93cee844-f524-11db-af62-aa767141e6b3}
Bcdedit /store newbcd /delete {8b87c5a1-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a2-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a3-f2f2-11db-9717-f87ee6ea6002}
Bcdedit /store newbcd /delete {8b87c5a4-f2f2-11db-9717-f87ee6ea6002}
在 EFI 固件初始化本地设备的 NVRAM 项的计算机上,可以根据需要删除所有 GUID 项。请不要删除 {bootmgr} 的项。

通过在导入操作过程中使用 /clean 选项删除所有 NVRAM 项,将最后一个命令添加到 RemoveDups.cmd 以导入新 BCD 文件:

Bcdedit /import newbcd /clean
保存该文件,然后在命令提示符下运行 RemoveDups.cmd,以便从 newbcd 存储中删除所有重复项,并将 newbcd 存储导入到系统 BCD。

重新启动系统。在重新启动过程中,EFI 固件重新初始化其固件对象 GUID 与连接到系统的设备相对应的 NVRAM。使用 bcdedit /enum 固件命令验证是否已删除所有的重复固件项。

请参阅

部署到基于 UEFI 的计算机
回复

使用道具 举报

发表于 2014-11-30 23:57:31 | 显示全部楼层
3.列出引导项,制作删除启动项的批处理
Bcdedit /enum firmware > enumfw.txt
这个文本文件在哪里?

点评

文本文件在C:\windows\system32\目录里。  详情 回复 发表于 2016-10-2 06:49
enumfw.txt就是这个命令生成的,你也可以换成其他名字 然后利用里面的GUID来构造bcdedit命令,删掉备份出的bcd里的多余引导项  详情 回复 发表于 2014-12-1 00:33
回复

使用道具 举报

 楼主| 发表于 2014-12-1 00:33:43 | 显示全部楼层
tearscn 发表于 2014-11-30 23:57
3.列出引导项,制作删除启动项的批处理
Bcdedit /enum firmware > enumfw.txt
这个文本文件在哪里?

enumfw.txt就是这个命令生成的,你也可以换成其他名字
然后利用里面的GUID来构造bcdedit命令,删掉备份出的bcd里的多余引导项
回复

使用道具 举报

发表于 2015-1-8 16:28:30 | 显示全部楼层
估计大家折腾这个比较少,所以没多少关心?今天我也遇到这个问题了,建立的项保存多了,不能删除,试试这个?按道理应该清CMOS能解决?或是BIOS?但笔记本不好搞了
回复

使用道具 举报

发表于 2015-1-8 22:45:45 来自手机 | 显示全部楼层
笔记本efi里可以删除多余项啊,我的也多出几条哦,都是自己删除了
回复

使用道具 举报

发表于 2015-1-9 08:42:00 | 显示全部楼层
Bcdedit /store newbcd /delete                   {5de59235-964c-11e4-830f-806e6f6e6963}

系统报错:
无法打开启动配置数据存储。
系统找不到指定的文件。

楼主一会savebcd,一会newbcd,到底有几个?

点评

原文是copy savebcd newbcd然后再删,最后import的 抱歉,这条漏了 可以只用一个文件  详情 回复 发表于 2015-1-11 12:53
回复

使用道具 举报

 楼主| 发表于 2015-1-11 12:53:45 | 显示全部楼层
bgs90 发表于 2015-1-9 08:42
Bcdedit /store newbcd /delete                   {5de59235-964c-11e4-830f-806e6f6e6963}

系统报错: ...

原文是copy savebcd newbcd然后再删,最后import的
抱歉,这条漏了
可以只用一个文件
回复

使用道具 举报

发表于 2016-10-2 06:49:34 | 显示全部楼层
tearscn 发表于 2014-11-30 23:57
3.列出引导项,制作删除启动项的批处理
Bcdedit /enum firmware > enumfw.txt
这个文本文件在哪里?

文本文件在C:\windows\system32\目录里。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-1-28 23:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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