2014-06-17 44 views
0

我的代碼應該使用Windows註冊表禁用testsigning BCD選項。與命令行bcdedit -set testsigning off相同。我不能用cmd做shellexecute。我在註冊表中找到了一個Testsigning引用,其值爲HKLM\SYSTEM\ControlSet001\Control\SystemStartOptions,但該值包含當前的內核運行選項,而不是下一次啓動的選項。使用註冊表禁用BCD testsigning選項

所以,我不能使用它。

我發現testsigning選項保存在HLKM\BCD00000000\Objects\{%GUID%}\Elements\16000049,但是這個GUID在不同的PC上是不同的。

我怎麼能得到它?

回答

1

如果你不打擾其激活所有啓動項的:

  • 枚舉之下「對象」的所有鍵名
  • 寫您的註冊表值在一個循環到每一個發現的鍵名。

使用NT原生API你的方法可能看起來像下面的僞代碼:

while(numEntries < index){ 
    NtEnumerateKey(index++, &pGuidKeyname...); 
    RtlStringCbPrintfW(buf, %s, rootkey,pGuidKeyname); 
    NtSetValueKey(buf, "YES"); 
}