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);

上面的代码产生以下结果:

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

如何让 keyData 显示正确的结果?我在网上看了很长时间,这几乎是我在网上找到的工作示例的副本......它设置为 UNICODE,我不想切换字符集。

4

1 回答 1

3

keyData是一个数组TCHAR。尝试使用 打印 char 数组%s

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

编辑 谢谢@Windows programmer

另外,keyDataLength应该是计算字节数,所以应该是1024 * sizeof(TCHAR)或者更简单sizeof(keyData)

于 2013-04-24T02:04:25.130 回答