「LPBYTEをchar *に変換する」で2時間グーグルした後、「RegQueryValueExW」に関連する結果のみが見つかりました
「RegQueryValueExW」関数以外に「LPBYTE」を使用する人はいません。
私の質問は、Unicode と ASCII の変換で発生します。RegQueryValueEx を使用すると、すべての ASCII 値が正しくなりますが、多国籍の観点からは、これは役に立ちません。
今、
私は次のコードを持っています、
char* GetStringRegKey(HKEY hKey, LPCWSTR strValueName, char* strValue, char* strDefaultValue)
{
strValue = strDefaultValue;
char szBuffer[512];
DWORD dwBufferSize = sizeof(szBuffer);
ULONG nError;
LPCWSTR TempPassingString;
char* hostName;
nError = RegQueryValueExW(hKey, strValueName, 0, NULL, (LPBYTE)szBuffer, &dwBufferSize);
if (ERROR_SUCCESS == nError)
{
strValue = szBuffer;
}
USES_CONVERSION;
return strValue;
}
これにより、次のようなszBuffer配列
が表示されます。
どちらが正しい値ですか。(「C」アフテットポインタ値に注意してください)。しかし、別の文字配列strValueに割り当てると、strValue の値として「C」のみが表示されます。
以下に示すように。
これはばかげた質問かもしれませんが、どこが間違っているのかわかりません。私のszBuffer全体をstrValueに変換するヘルプ、コードブロック、またはヒントを提案してください。