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

相關文章
相關標籤/搜索