0

win2003 を除くすべての OS で正常に動作するレジストリを読み書きするコードを作成しました。基本的に、レジストリに値を設定した後(RegSetValueExW)、正しく読み取ることができます(RegQueryValueExW)。しかし、regedit を開くと、いくつかのジャンク文字が表示されます。

を使用して開く

RegOpenKeyExW(HKEY_LOCAL_MACHINE, subKey , 0, KEY_WRITE | KEY_WOW64_64KEY, &_regKey);

設定する: (値は wstring です)

::RegSetValueExW(_regKey, key, NULL, REG_MULTI_SZ, reinterpret_cast<const BYTE*>(value.c_str()), static_cast<DWORD>(value.length()*2 + 1));

クエリの場合:

::RegQueryValueExW(regKey, key, NULL, &type, reinterpret_cast<LPBYTE>(&value[0]), &valueLength);
4

2 に答える 2

2

の MSDN マニュアル ページからRegSetValueExW:

REG_MULTI_SZ データ型では、文字列は 2 つのnull文字で終了する必要があります。

BYTE2 つのターミネータ文字を含む配列を作成し、それを関数に渡す必要があります。

于 2012-06-20T05:58:34.907 に答える
0

(value.length() + 1)*2の代わりに使用する必要がありvalue.length()*2 + 1ます。

于 2012-06-20T05:33:00.673 に答える