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设置的,我不想切换字符集。

最佳答案

keyDataTCHAR的数组。尝试使用%s打印char数组。

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


编辑
谢谢@Windows programmer

另外,keyDataLength应该计数字节,因此它应该是1024 * sizeof(TCHAR)或更简单的sizeof(keyData)

09-11 17:58