我正在编写一个应用程序,它将使用api regdeletekey或regdeletekeyex递归地删除一些注册表项。让我困扰的是,regdeletekeyex没有为低于xp x64 professional的用户定义,所以现在这个限制限制限制了我的应用程序。有什么方法可以让我在xp x86和win7 x64之间同时使用这两个api吗?
最佳答案
为了让您的应用程序在不存在RegDeleteKeyEx
的旧系统中运行,您需要避免静态链接到此api。也就是说,您不直接使用这个函数,而是通过GetProcAddress
在运行时获取它的指针。如果成功,则api可用,您可以使用它(或者您可以检查os版本)。
看看这里:How can I use RegDeleteKeyEx:
hAdvAPI32 = LoadLibrary(_T("AdvAPI32.dll"));
ASSERT(hAdvAPI32 != NULL);
_RegDeleteKeyEx = (PFN_RegDeleteKeyEx)GetProcAddress(hAdvAPI32 , "RegDeleteKeyEx");
ASSERT(_RegDeleteKeyEx != NULL);
RegDeleteKey
可以直接使用,因为它存在于所有目标平台中。关于windows - RegDeleteKey和RegDeleteKeyEx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12797905/