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, ¤tKey);
_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设置的,我不想切换字符集。
最佳答案
keyData
是TCHAR
的数组。尝试使用%s
打印char数组。
_tprintf(TEXT("Data: %s\n"), keyData);
//^^^ not %d
编辑
谢谢
@Windows programmer
另外,
keyDataLength
应该计数字节,因此它应该是1024 * sizeof(TCHAR)
或更简单的sizeof(keyData)
。