はじめて投稿させていただきました。よろしくお願いします。
現在、レジストリの情報をtxtファイルに取得するプログラムをVC++で
作成してます。
しかし、バイナリデータ(例:『12 13 14 15 16』)を取得することができません。
以下にプログラムの一部分と出力結果を抜粋します。(strTXTに格納した後でファイルに
書き出す方法を使っています。)
どなたか良きアドバイスをお願いします。
【ソース】
HKEY OpenSubKey;
char EntryName[MAX_PATH_2]; // サブキー名を格納するバッファ
DWORD dwSize = MAX_PATH_2; // バッファーサイズ
DWORD dwType; // データ型・バッファー
CString strMsg; // データ値
void *BIData;
long lRes;
case REG_BINARY: // バイナリ
lRes = RegQueryValueEx( OpenSubKey, EntryName, NULL, &dwType, (LPBYTE)&BIData, &dwSize );
if ( lRes== ERROR_SUCCESS ){
strMsg.Format("%u", (LPBYTE)&BIData);
CString strTXT = strMsg;
break;
}
【出力結果】
1243016
レジストリは使った事無いんで間違ってるかもしれませんが、
MSDNを読む限り、RegQueryValueEx関数はポインタの取得関数ではなく、
データの取得関数のように思います。
なので、BIData変数はポインタ型ではなくBYTE型の配列であるべきでは?
それならキャストしなくてもいいですし。
>strMsg.Format("%u", (LPBYTE)&BIData);
これだと取得される値はBIDataのアドレスになりませんか?