gpt4 book ai didi

windows - 以编程方式编辑 Windows 8 上的 BCD 存储?

转载 作者:可可西里 更新时间:2023-11-01 11:33:38 25 4
gpt4 key购买 nike

在 Windows Vista+ 上,BCD 引导数据存储在 HKEY_LOCAL_MACHINE\BCD00000000 下的注册表中。 BCDEDIT 命令行工具只是以可读的方式呈现该数据。

因此,从理论上讲,任何以管理员身份运行的用户编程应用程序都应该能够以与 BCDEDIT.EXE 相同的方式编辑该存储,对吗?

DWORD 结果 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("BCD00000000\\Objects\\..."), 0, KEY_SET_VALUE, &hKey);

然而,当我运行此(在管理员帐户下)时,结果值为 0x5(访问被拒绝)。

我在这里遗漏了什么,还是没有办法编写一个可以在不调用 BCDEDIT 的情况下以编程方式编辑 BCD 数据的应用程序?

最佳答案

以编程方式编辑 Windows BCD 的唯一两种方法是:

  1. 脚本 bcdedit(不是真正的程序化方法)
  2. 使用 WMI BCD 提供程序接口(interface)(用于 BCD 访问的特殊 WMI 函数和对象)

BCD 以注册表文件格式存储,“系统”BCD 映射到 HKLM\BCD00000000。

BCD 是对象的集合(加载程序/应用程序、设置、设备对象)。

在不使用上述方法的情况下,一般情况下无法编辑 BCD 对象,因为 BCD 对象的结构可能非常复杂(例如 vhd 加载器)。

以编程方式使用 BCD WMI 提供程序的工具示例是 Visual BCD Editor - 一个完整的 BCD 编辑器(其他 BCD 工具只能编辑 BCD 的一部分,并且只能编辑简单的对象,它们无法处理更复杂的对象)。

探索任何 BCD 表明 BCD 中最复杂的结构是设备元素(任何加载程序的一部分)。设备元素是真正的对象,除非知道它们的确切结构或使用定义明确的访问函数(来自 WMI BCD 提供程序),否则无法进行编辑。

关于windows - 以编程方式编辑 Windows 8 上的 BCD 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com