2015-10-30 68 views
-1

我需要從我的應用程序中讀取HKEY_LOCAL_MACHINE \ SOFTWARE中的​​鍵值。我用下面的代碼片段要做到這一點,但它總是返回2.RegOpenKeyExW和HKEY_LOCAL_MACHINE在Windows Embedded 7上返回2 64位

std::wstring strTmp; 
strTmp = L"SOFTWARE\\TEMP"; 
RegOpenKeyExW(HKEY_LOCAL_MACHINE, strTmp.c_str(), 0, KEY_READ, &hKey)) 

但是當我使用HKEY_CURRENT_USER那麼我就能從HKEY_CURRENT_USER\SOFTWARE成功讀取信息。據我瞭解,由於訪問權限,我的應用程序無法從HKEY_LOCAL_MACHINE讀取。我用管理員權限運行我的應用程序(使用運行方式),但這並沒有幫助我。

有人可以介紹一下如何使用RegOpenKeyExW訪問HKEY_LOCAL_MACHINE

我沒有經過鏈接12但這並沒有幫助我,

+0

Windows錯誤代碼2是ERROR_FILE_NOT_FOUND。你確定你的註冊表項存在嗎? –

+1

你的代碼也看起來缺少一個打開的標誌。使用KEY_WOW64_64KEY訪問64位視圖或使用KEY_WOW64_32KEY訪問32位視圖(即Wow6432Node下的鍵)。 –

+0

@ Mohamad Elghawi是註冊表項存在。但它仍然返回2.另外我使用Procmon監視註冊表路徑,並且在進行此調用時顯示正確的路徑,但窗口顯示找不到文件。另外,正如你所建議的,我曾試着將KEY_WOW64_64KEY與KEY_READ結合在一起,但沒有運氣。 – Panch

回答

0

我道歉,我的誤解。其實我不得不使用KEY_WOW64_32KEY國旗而不是KEY_WOW64_64KEYRegOpenKeyExW(HKEY_LOCAL_MACHINE, strTmp.c_str(), 0, KEY_READ | KEY_WOW64_32KEY, &hKey))來讓我的應用程序工作。感謝Mohamad Elghawi。