2

在“将 LPBYTE 转换为 char*”上 2 小时谷歌后,我只找到了与“RegQueryValueExW”相关的结果

除了“RegQueryValueExW”函数,没有人使用“LPBYTE”。

如果我使用 RegQueryValueEx 会为我提供正确的所有 ASCII 值,但从多国的角度来看,这对我没有帮助,我的问题出现在 unicode 和 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时,只有“C”显示为 strValue 的值;

如下所示。

在此处输入图像描述

这可能是一个愚蠢的问题,但我不明白我哪里出错了。请提出任何可以将我的整个 szBuffer 转换为 strValue 的帮助、代码块或提示。

4

0 回答 0