c++ - 从注册表 HKEY_LOCAL_MACHINE 中删除 key

标签 c++ visual-studio registry windows-7-x64

我想制作卸载程序,它应该从 HKEY_LOCAL_MACHINE 中删除注册表项。问题是每次我尝试删除位置时都会得到 LASTERROR 2,这通常是错误的名称。

HKEY hKey = HKEY_LOCAL_MACHINE;
LSTATUS deletes = SHDeleteKey(hKey, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\NameOfApp\\");
if (deletes == ERROR_SUCCESS)
{
    return true;
}

我在 C# 中有相同的代码可以工作,但 C++ 不行。也尝试以管理员身份,仍然没有(C# 没有设置任何特殊权限和工作)。

操作系统:Windows 7,64 位。

你知道发生了什么事吗?

最佳答案

在 64 位 Windows 上有两个独立的注册表树。一个用于 32 位应用程序,另一个用于 64 位应用程序。这取决于您的应用程序(32 位与 64 位)在调用 SHDeleteKey 时使用哪个树,这可能就是为什么它使用 c# 而不是 C++

您可以使用 RegDeleteKeyEx明确定义您要访问的树。

关于c++ - 从注册表 HKEY_LOCAL_MACHINE 中删除 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29058782/

相关文章:

git - 如何在 git 中配置我的代码编辑器?

visual-studio - 如何忽略错误消息 "cannot find pdb files"?

.net - Visual Studio 的最佳替代 IDE 是什么

c# - 为什么遍历枚举返回重复键?

registry - 编写 .reg 文件时,如何指定以十进制编辑 DWORD?

c# - 隐藏的注册表项/值

c++ - std::inner_product 计算 vector 的标准差

C++ 无法创建用户定义类的 vector

C++——我们为什么要在此构造函数中使用 explicit?

c++ - 在 C++ 中查找函数的地址