我一直在玩这个,我无法理解为什么RegDeleteKey函数导致文件找不到错误..
我创建了此测试密钥,存在。 HKLM \ SOFTWARE \测试 我也是这台电脑的管理员。操作系统是Vista 32位。
int main()
{
HKEY hReg;
LONG oresult;
LONG dresult;
oresult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\test", 0, KEY_ALL_ACCESS, &hReg);
if(oresult == ERROR_SUCCESS)
{
cout << "Key opened successfully." << endl;
}
dresult = RegDeleteKey(hReg, L"SOFTWARE\\test");
if(dresult == ERROR_SUCCESS)
{
cout << "Key deleted succssfully." << endl;
}
else
{
if(dresult == ERROR_FILE_NOT_FOUND)
{
cout << "Delete failed. Key not found." << endl;
cout << "\n";
}
}
RegCloseKey(hReg);
return 0;
}
输出结果为:
键成功打开 删除失败。找不到钥匙。
答案 0 :(得分:4)
根据MSDN页面,第二个参数是hKey中键的子键:
要删除的密钥的名称。它 必须是hKey键的子键 识别,但不能 子项。这个参数不能 NULL。
这意味着您的代码实际上会尝试删除HLKM \ SOFTWARE \ test \ SOFTWARE \ test。
你可能想尝试类似的东西:
RegDeleteKey(HKEY_LOCAL_MACHINE, L"SOFTWARE\\test");
This可能派上用场。
答案 1 :(得分:0)
检查错误2 /“找不到文件”的两件事:
如果你创建像HKCU这样的文件夹&gt;软件&gt;在CompanyName然后使用RegSetValueEx存储类似option =“foo”的值,然后您需要使用RegDeleteValue或RegDeleteValueEx删除它。