【发布时间】:2020-12-01 12:31:22
【问题描述】:
请帮助我如何分配一个值! 我不知道如何将 String 转换为 TCHAR 以写入 reg_sz 注册表
string par = "1234.32.23";
_TCHAR szTestString[] = _T(pra);
完整代码
string par = "1234.32.23";
HKEY ProxyServerKey;
RegCreateKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &ProxyServerKey, NULL);
_TCHAR szTestString[] = _T(par);
RegSetValueExW(ProxyServerKey, L"ProxyServer", 0, REG_SZ, (BYTE*)szTestString, sizeof(szTestString));
RegCloseKey(ProxyServerKey);
SendNotifyMessageW(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);
【问题讨论】:
-
您真的需要
_TCHAR[](即char[])吗?我想你想调用的函数只需要一个const char*,然后你可以使用par.c_str()。你能显示更多的代码吗?或命名您要调用的函数。您可以将strcpy字符串放入数组中,但可能有更简单的方法。 -
@churill 我添加了完整的代码
-
这能回答你的问题吗? std::string to char*
-
将
TCHAR与W版本的函数与std::string混合使用表明对其中一个或另一个实际作用的误解。 (看起来_T在不了解它的作用的情况下被使用了。)我强烈建议回去学习 Windows 如何处理字符串,然后在与 API 交互时无条件地使用宽字符串。 -
您可以只使用该 API 的
A版本:docs.microsoft.com/en-us/windows/win32/api/winreg/…