以下是我在XPCOM CPP DLL中用於檢查註冊表中是否存在密鑰的代碼的簡化示例。 它檢查2鍵的存在:HKLM\SOFTWARE\Microsoft
和HKLM\SOFTWARE\Microso
都存在具有相同的權限,但第一個是通過此代碼找到,第二個不是......任何想法爲什麼?XPCOM CPP代碼無法在註冊表中找到現有密鑰
nsCOMPtr<nsIWindowsRegKey> regKey =
do_CreateInstance("@mozilla.org/windows-registry-key;1");
if (!regKey) {
log("can't create @mozilla.org/windows-registry-key;1");
return -1;
}
NS_NAMED_LITERAL_STRING(key2,
"SOFTWARE\\Microsoft");
if (NS_FAILED(regKey->Open(nsIWindowsRegKey::ROOT_KEY_CLASSES_ROOT,
key2, nsIWindowsRegKey::ACCESS_QUERY_VALUE))) {
// FAILED
LOG("regKey:: no such key");
}
NS_NAMED_LITERAL_STRING(key1,
"SOFTWARE\\Microso");
if (NS_FAILED(regKey->Open(nsIWindowsRegKey::ROOT_KEY_CLASSES_ROOT,
key1, nsIWindowsRegKey::ACCESS_QUERY_VALUE))) {
// FAILED
LOG("regKey:: no such key");
}
編輯:爲了明確這一點,我創建了一個註冊表項自己,叫HKLM\SOFTWARE\Microso
我可以通過regedit
訪問它。
您是否使用了x64 Windows上的x86 Firefox構建(通常)? – 2012-07-30 19:42:58
@WladimirPalant是的。 – zenpoy 2012-07-30 20:11:46