Mfc 如何将两种形式(字符串和二进制)的unicode字符串写入注册表?

Mfc 如何将两种形式(字符串和二进制)的unicode字符串写入注册表?,mfc,registry,winapi,Mfc,Registry,Winapi,我有一个基于对话的程序。它有一个编辑框,我从用户那里获取输入。我必须以两种形式将输入的unicode字符串写入注册表,一种是使用REG_SZ的字符串形式,另一种是使用REG_binary的二进制形式UTF-8 HEXA。我该怎么做呢?您可以使用std::wstring来代替CString-下面是一个例子,其中一个整数被转换为wstring,然后放入注册表注册表注册表注册表项 CString txt; m_wndEdit.GetWindowText(txt); HKEY key;

我有一个基于对话的程序。它有一个编辑框,我从用户那里获取输入。我必须以两种形式将输入的unicode字符串写入注册表,一种是使用REG_SZ的字符串形式,另一种是使用REG_binary的二进制形式UTF-8 HEXA。我该怎么做呢?

您可以使用std::wstring来代替CString-下面是一个例子,其中一个整数被转换为wstring,然后放入注册表注册表注册表注册表项

CString txt;
    m_wndEdit.GetWindowText(txt);

    HKEY key;
    HKEY    KeySet   = HKEY_CURRENT_USER;
    if (ERROR_SUCCESS == RegOpenKeyExW(KeySet,_T("Software\\MyApp"),0,KEY_ALL_ACCESS,&key))
    {       
        if (ERROR_SUCCESS == 
            RegSetValueExW(key, _T("MyParamSZ"), 0,REG_SZ, (BYTE*)txt.GetString(), txt.GetLength()))
        {

        }
        if (ERROR_SUCCESS == 
            RegSetValueExW(key, _T("MyParamBIN"), 0,REG_BINARY, (BYTE*)txt.GetString(), txt.GetLength() * sizeof(WCHAR)))
        {

        }
RegCloseKey(key);
    }
bool SetRegistryKeyValue(int NewSetting) const
{
    bool result = false;
    HKEY hkey = nullptr;
    std::wstring str = std::to_wstring(NewSetting);


    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, STRING_REGISTRY_KEY, 0, KEY_WRITE, &hkey) == ERROR_SUCCESS) {
        RegSetValueExW(hkey, STRING_REGISTRY_VALUE, NULL, REG_SZ, (BYTE*)str.c_str(), str.size());
        RegCloseKey(hkey);
        result = true;
    }
    return result;
}

谢谢你的帮助。我仍然有问题。当我将unicode字符串写入注册表时,我希望以utf-8十六进制的形式写入,但您的解决方案保存十六进制unicode。你对这个问题有什么想法吗?