【发布时间】:2012-10-10 06:59:32
【问题描述】:
我正在尝试为 32 位和 64 位操作系统实现注册表项的递归删除。由于 RegDeleteKeyEx 没有为低于 XP x64 Professional 的操作系统定义,我正在尝试间接使用该功能。
问题:: 即使在 x64 上,GetProcAddress() 也会返回 NULL。
//Global Declarations
typedef LONG (WINAPI * PFN_RegDeleteKeyEx)(HKEY hKey , LPCTSTR lpSubKey , REGSAM samDesired , DWORD Reserved );
PFN_RegDeleteKeyEx _RegDeleteKeyEx ;
//The code inside function
hAdvAPI32 = LoadLibrary(TEXT("Advapi32.dll"));
_RegDeleteKeyEx = (PFN_RegDeleteKeyEx)GetProcAddress( hAdvAPI32, "RegDeleteKeyEx" );
if( _RegDeleteKeyEx == NULL )
printf("NULL\n") ;
【问题讨论】:
-
改用“RegDeleteKeyExW”。
-
@HansPassant:如果他的代码在没有
UNICODE的情况下编译,硬编码宽字符变体将是错误的,因为他在他的 typedef 中使用了LPC*T*STR。 -
@HansPassant- 感谢伙伴的帮助。我明白了这个概念:-)