使用RegOpenKeyEx打開HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 成功,RegQueryValueEx 失敗。
又隨便換了幾個位置的鍵讀取,一樣的代碼有的成功,有的失敗。逐一確認不知權限的問題。
網上找了半天,原來是64位系統的註冊表結構和32位略有不一樣。
好比:
32位 HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\
64位 HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\
路徑被映射到wow6432node下,若是恰巧32位同路徑下值相同,就能夠順利取到值。
打開註冊表編輯器互相比較一下,就很容易明白了。
64位讀取32位註冊表路徑要在RegOpenKeyEx時加上KEY_WOW64_64KEY參數。
RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
0,
KEY_QUERY_VALUE|KEY_WOW64_64KEY,
&hkey)node
原文連接:https://blog.csdn.net/vawter_gu/article/details/50471139編輯器