从注册表中删除密钥 HKEY_LOCAL_MACHINE

Delete key from registry HKEY_LOCAL_MACHINE

我想制作应该从 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# 没有设置任何特殊权限和工作)。

OS: Windows 7, 64 位。

你知道发生了什么事吗?

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

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