使用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)
原文鏈接:https://blog.csdn.net/vawter_gu/article/details/50471139