これは、レジストリにキーが存在するかどうかを確認するために XPCOM CPP DLL で使用するコードの簡単な例です。2 つのキーの存在を確認します。HKLM\SOFTWARE\Microsoft
両方HKLM\SOFTWARE\Microso
とも同じアクセス許可で存在しますが、最初のキーはこのコードで検出され、2 番目のキーは検出されません...なぜでしょうか?
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
.