我从库Advapi32.dll动态加载多个注册表API。在Windows XP和Vista下,一切正常。在Windows 7下,我不断收到错误该参数不正确,在某些情况下(如RegCloseKey)我的应用程序崩溃。在Windows 7上动态加载注册表功能?
我使用的代码是通常的:
// RegCreateKeyEx
typedef LONG (WINAPI *MyRegCreateKeyEx)(HKEY, LPCTSTR, DWORD, LPTSTR, DWORD, REGSAM, LPSECURITY_ATTRIBUTES, PHKEY, LPDWORD);
MyRegCreateKeyEx LoadedRegCreateKeyEx;
然后我用LoadLibrary加载Advapi.dll和GetProcAddress找到地址RegCreateKeyEx。像:
LoadedRegCreateKeyEx = (MyRegCreateKeyEx)GetProcAddress(LibHandle, "RegCreateKeyEx");
一切返回OK,没有任何错误和指针似乎是正确的,但它不能在Windows 7 任何想法下工作吗?有什么改变吗?有没有不同的方式来为Windows 7做到这一点?
谢谢 jess。
编辑:这似乎是这个问题扩展到所有类型的API在Windows 7上。任何想法?
你在Windows 7 ** x64 **上试试吗? – SLaks 2009-12-10 20:47:33
x86和x64。在这两种情况下都是一样 – Jessica 2009-12-10 20:48:27
当你直接调用RegCreateKeyEx而不是动态加载的时,你会得到同样的问题吗? – karoberts 2009-12-10 20:57:00