2

「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に変換するヘルプ、コードブロック、またはヒントを提案してください。

4

0 に答える 0