64位读取注册表与32位的区别

有一个读取注册表信息的程序  if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkeystring , 0, KEY_READ, &hKey) == ERROR_SUCCESS)/html

,在32位下彻底正常,可是在64位返回值正确,但就是读不到东西。后来单步发现读不到东西,就搜64位读注册表失败,发现须要加app

if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkeystring , 0,KEY_READ|KEY_WOW64_64KEY, &hKey) == ERROR_SUCCESS)就能够了,我是所有把权限提升,还能够根据不一样的操做系统,设置不一样的参数。spa

 

IsWow64Process 判断64位操做系统

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
IsWow64返回TRUE则是64位系统,不然为32位系统。
BOOL IsWow64()
{
    BOOL bIsWow64 = FALSE;
    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");

    if(NULL != fnIsWow64Process)
    {
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
                        return FALSE;
        }
    }
    return bIsWow64;
}操作系统

可参考的文献:code

 

http://msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspxhtm

http://www.codeproject.com/Articles/51326/Net-Compilation-registry-accessing-and-applicatioblog

http://boluns.blog.163.com/blog/static/69845968201071132032313/string

 

 

友情连接:http://www.cnblogs.com/walfud/articles/2311065.htmlit

相关文章
相关标签/搜索