写入注册时,WideCharToMultiByte会生成中文字符

时间:2015-10-06 14:56:45

标签: visual-studio character-encoding widechar multibyte-functions

我有一个IE BHO的古老代码,我正在尝试为它存储一些数据。

我正在尝试这种方法:

// key is an LPWSTR provided as a method parameter
// sValue is an LPWSTR provided as a method parameter

HKEY hKey = NULL;

HRESULT hRes = IEGetWriteableHKCU(&hKey);

if (SUCCEEDED(hRes) && hKey)
{
    CHAR mbStr[2048] = { 0 };
    WideCharToMultiByte(CP_UTF8, 0, sValue, lstrlen(sValue), mbStr, 2048, NULL, NULL);

     // Skipping error checking for now
    RegSetKeyValue(hKey, L"A\\Key\\I\\Can\\Write\\To", key, REG_SZ, mbStr, (DWORD)strnlen_s(mbStr, 2048));

    RegCloseKey(hKey);
}

我输入的值被写入,并且可以成功读取。但是,当我在注册表中看到它时,我看到了汉字。这将使故障排除具有挑战性,因此我希望正确编写字符。

这显然是某种编码问题,但我似乎无法找到解决它的神奇子弹。

谢谢!

0 个答案:

没有答案