Mfc 如何将两种形式(字符串和二进制)的unicode字符串写入注册表?
我有一个基于对话的程序。它有一个编辑框,我从用户那里获取输入。我必须以两种形式将输入的unicode字符串写入注册表,一种是使用REG_SZ的字符串形式,另一种是使用REG_binary的二进制形式UTF-8 HEXA。我该怎么做呢?您可以使用std::wstring来代替CString-下面是一个例子,其中一个整数被转换为wstring,然后放入注册表注册表注册表注册表项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;
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。你对这个问题有什么想法吗?