RegDeleteKey和RegDeleteKeyEx

时间:2012-10-09 10:21:31

标签: windows winapi registry

我正在编写一个应用程序,它将使用API​​ RegDeleteKey RegDeleteKeyEx 递归删除一些注册表项。困扰我的是 RegDeleteKeyEx 的定义不是 XP x64 Professional ,所以现在这个限制限制了我的应用。有什么方法可以使用兼容从XP x86到Win7 x64的两种API?

1 个答案:

答案 0 :(得分:0)

为了让您的应用在不存在RegDeleteKeyEx的旧系统中运行,您需要避免静态链接到此API。也就是说,您不能直接使用此函数,而是通过GetProcAddress在运行时获取其指针。如果成功,则API可用,您可以使用它(或者您可以检查操作系统版本)。

看看这里:How can I use RegDeleteKeyEx

   hAdvAPI32 = LoadLibrary(_T("AdvAPI32.dll"));
   ASSERT(hAdvAPI32 != NULL);
   _RegDeleteKeyEx = (PFN_RegDeleteKeyEx)GetProcAddress(hAdvAPI32 , "RegDeleteKeyEx");
   ASSERT(_RegDeleteKeyEx != NULL);

RegDeleteKey可以直接使用,因为它存在于所有目标平台中。