2013-06-12 47 views
1

在Windows Vista + BCD引導數據存儲在註冊表下HKEY_LOCAL_MACHINE\BCD00000000。 BCDEDIT命令行工具只是以可讀的方式呈現數據。以編程方式編輯Windows 8上的BCD商店?

因此,理論上,任何以管理員身份運行的用戶編程的應用程序都應該能夠以與BCDEDIT.EXE相同的方式編輯該存儲庫,對嗎?

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

然而,當我運行這個(下管理員帳號),結果的值是爲0x5(拒絕訪問)。

有沒有我在這裏失蹤的東西,還是有沒有辦法編寫一個應用程序,可以編程BCD數據而無需調用BCDEDIT?

回答

3

編輯窗口的方式只有兩種BCD程序是:

  1. 腳本BCDEDIT(不是一個真正的編程方法)
  2. 使用WMI BCD提供程序接口(特殊WMI功能和BCD訪問對象)

BCD以註冊表文件格式存儲,「系統」BCD映射到HKLM \ BCD00000000。

BCD是對象(裝載器/應用程序,設置,設備對象)的集合。

由於BCD對象的結構可能相當複雜(例如vhd loader),所以在不使用上述方法的一般情況下,不能編輯BCD對象。

使用BCD WMI提供程序工具的一個例子是Visual BCD Editor - 一個完整的BCD編輯器(其它BCD工具可以,他們不能在更復雜的對象編輯BCD的唯一部分,且只簡單對象)。

探索任何BCD表明BCD中最複雜的結構是設備元素(任何加載程序的一部分)。設備元素是真實的對象,編輯是不可能的,除非他們的確切結構是已知的或者使用定義良好的訪問函數(來自WMI BCD提供者)。

相關問題