这是我在 XPCOM CPP DLL 中使用的代码的简化示例,用于检查注册表中是否存在密钥。它检查是否存在 2 个键:HKLM\SOFTWARE\Microsoft
并且HKLM\SOFTWARE\Microso
两者都具有相同的权限,但是此代码找到了第一个,而第二个则没有……知道为什么吗?
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
.