在谷歌“将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 时,只有“C”显示为strValue的值;
如下图所示。
这可能是一个愚蠢的问题,但我不明白我哪里错了。 请建议将我的整个szBuffer转换为strValue的任何帮助,代码块或提示。