Winapi 如何使用RegDeleteTree删除密钥\u WOW64\u 64密钥密钥?
我已经在32位程序中测试了Winapi 如何使用RegDeleteTree删除密钥\u WOW64\u 64密钥密钥?,winapi,64-bit,registry,Winapi,64 Bit,Registry,我已经在32位程序中测试了RegDeleteTree()。它只删除键\u WOW64\u 32键键。是否有类似于RegOpenKeyEx()的函数来指定KEY\u WOW64\u 32KEY或KEY\u WOW64\u 64KEY 我已经厌倦了这个代码: HKEY key = NULL; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\asd"), 0, KEY_READ | KEY_WOW64_64KEY, &key) == ERR
RegDeleteTree()
。它只删除键\u WOW64\u 32键
键。是否有类似于RegOpenKeyEx()
的函数来指定KEY\u WOW64\u 32KEY
或KEY\u WOW64\u 64KEY
我已经厌倦了这个代码:
HKEY key = NULL;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\asd"), 0, KEY_READ | KEY_WOW64_64KEY, &key) == ERROR_SUCCESS)
{
long d = RegDeleteTree(key, NULL);
if (d != ERROR_SUCCESS)
{
cout << "Error" << d;
}
else
{
cout << "Success";
}
}
HKEY=NULL;
如果(RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T(“软件\\asd”)、0、KEY_READ | KEY_WOW64_64KEY,&KEY)=错误_成功)
{
长d=RegDeleteTree(键,NULL);
如果(d!=错误\u成功)
{
不能使用RegOpenKeyEx
和KEY\u WOW64\u 64KEY
打开密钥的64位视图。然后调用RegDeleteTree
传递返回的密钥
关于您的更新。您仅在打开密钥时请求读取权限。regdeleteteTree
的文档说明:
必须使用以下访问权限打开密钥:删除、密钥枚举、子密钥和密钥查询值
调用无论如何都会成功,这一事实使我认为您的进程受到虚拟化的影响。您需要为强制UAC提升的进程创建清单。请使用清单中的requireAdministrator
选项。使用RegOpenKeyEx
和KEY\u WOW64\u 64KEY
打开密钥的64位视图。然后调用regdeletetetree
传递返回的密钥
关于您的更新。您仅在打开密钥时请求读取权限。regdeleteteTree
的文档说明:
必须使用以下访问权限打开密钥:删除、密钥枚举、子密钥和密钥查询值
调用无论如何都会成功,这让我觉得您的进程要进行虚拟化。您需要为强制UAC提升的进程创建清单。请使用清单中的requireAdministrator
选项。我相信您只需要在RegOpenKeyEx()上设置
调用并使用返回的句柄作为regdeleteteTree()
@Phylogenesis()的参数。但是,它不起作用。@zzy:定义“不起作用”。您试图实现什么?您的实际代码看起来像什么?您期望发生什么,它实际(不)是什么正在执行?是否报告任何错误代码?我相信您只需在RegOpenKeyEx()
调用上设置,并将返回的句柄用作RegDeleteTree()
@Phylogenesis的参数。但是,它不起作用。@zzy:define“不起作用”。你想达到什么目的?你的实际代码是什么样子的?你期望发生什么,它实际上(没有)在做什么?是否有任何错误代码被报告?我尝试了regdeleteteTree(returnedKey,NULL)
,但它不起作用。我仍然相信我的答案是正确的我尝试了RegDeleteTree(returnedKey,NULL)
但它不起作用。我仍然相信我的答案是准确的