我想制作卸载程序,它应该从 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/