电脑装配网

删除UEFI固件中的Windows Boot Manager

 人阅读 | 作者lilintao | 时间:2023-10-06 03:49

做过系统安装的同学应该会注意到在UEFI系统会记录上次启动成功的磁盘并做为默认项,Windows下通常叫"Windows Boot Manager",下次启动时自动从该启动项启动。这个大部分情况下是非常友好的,启动速度会快一些。不过有些时候安装完系统后不想让它从上次启动的项再次启动,这里提供一个想法,就是删除被UEFI固件默认的启动项"Windows Boot Manager"。

这个在Windows系统中是提供了API的,首先,调用ZwEnumerateBootEntries枚举固件中的所有启动项,枚举名称为"Windows Boot Manager"的启动项,找到后再调用ZwDeleteBootEntry删除该项。

其中ZwEnumerateBootEntries的原型为:

typedefNTSTATUS(NTAPI *PFN_ZwEnumerateBootEntries)(__out_bcount_opt(*BufferLength) PVOID Buffer,__inout PULONG BufferLength);

ZwDeleteBootEntry的原型为:

typedefNTSTATUS(NTAPI *PFN_ZwDeleteBootEntry)(__in ULONG Id);

它们都在ntdll.dll里导出。在ntdll.dll里还导出了修改启动,添加启动项、修改启动项顺序等操作。下面看下我试验的例子:

使用API得到的UEFI启动项设置

上图中,分别取出了默认启动项,所有启动项,和当前启动项顺序。

知道这个知识点后,大家可以自由发挥了。


文章标签:

本文链接:『转载请注明出处』

  • 上一篇:酷狗
  • 下一篇:没有了