2013-04-24 62 views
0
DWORD dwType = REG_SZ; 
TCHAR keyData[1024]; 
DWORD keyDataLength = 1024; 
cchValue = MAX_VALUE_NAME; 
achValue[0] = '\0';  
HKEY currentKey; 
long err = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), NULL, KEY_READ, &currentKey); 
_tprintf(TEXT("OpenKey Error Code: %d\n"), err); 
err = RegQueryValueEx(currentKey, TEXT("STEAM"), NULL, NULL, (LPBYTE)&keyData, &keyDataLength); 
_tprintf(TEXT("QueryKey Error Code: %d\n"), err); 
_tprintf(TEXT("Data: %d\n"), keyData); 

上面的代碼產生以下結果:的RegQueryValueEx給人奇怪的數據

OpenKey Error Code: 0 
QueryKey Error Code: 0 
Data: 15332432 

我怎樣才能獲得KEYDATA以顯示正確的結果?我在網上查了很長一段時間,這幾乎是我在網上找到的工作示例的副本...它設置爲UNICODE,我不想切換字符集。

+0

什麼是MAX_VALUE_NAME設置爲? – 2013-04-24 02:04:18

回答

3

keyDataTCHAR的數組。嘗試使用%s打印char數組。

_tprintf(TEXT("Data: %s\n"), keyData); 
        //^^^ not %d 

編輯 感謝@Windows programmer

此外,keyDataLength應該算個字節,所以它應該是1024 * sizeof(TCHAR)或者更簡單地sizeof(keyData)

+0

是的。另外,keyDataLength應該計算字節數,所以它應該是1024 * sizeof(TCHAR)或更簡單的sizeof keyData。 – 2013-04-24 02:06:16

+0

@Windowsprogrammer感謝您指出這一點,我沒有注意到,當我看着打印輸出。 – taocp 2013-04-24 02:07:05

+0

* Facepalm *非常感謝,我只是從另一部分複製了它,忘了改變它... – Knox 2013-04-29 23:17:10