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 に答える