c++ RegCreateKeyEx LPCWSTR from std::string

c++ RegCreateKeyEx LPCWSTR from std::string

本文关键字:string std from RegCreateKeyEx LPCWSTR c++      更新时间:2023-10-16

我在注册表中编写了一些操作,我被困了两天。真的不知道如何解决这个问题。所以,这是我的代码:

 HKEY hkey;
 DWORD dwDisposition;
 string address = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\";
 QString qAddr= ui->networkCard->itemData(ui->networkCard->currentIndex()).toString();
 address += qAddr.toStdString();
 string sAddr = qAddr.toStdString();
cout << address; // here is the value I want to proceed as 2nd arg in RegCreateKeyEx
size_t size = address.size();
wchar_t szBuff[size];
swprintf(szBuff, size, L"%s", address.c_str());
cout << szBuff << endl; // but after conversion I get some hex data like 0x28d172 :(
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE, szBuff, 0, NULL, 0, KEY_WRITE, NULL, &hkey, &dwDisposition) == ERROR_SUCCESS){
  DWORD dwType, dwSize;
  dwType = REG_DWORD;
  ....

RegCreateKeyEx需要一个LPCWSTR参数,但我真的不知道如何从std::string中做到这一点。你能帮我解决这个问题吗?:)谢谢!

RegCreateKeyEx 只有在您的项目设置为 unicode 时才需要 LPCWSTR。如果你想要一个 unicode 项目,那么使用 std::wstring 而不是 std::string。 如果您不需要 unicode 项目,请将项目字符集设置更改为多字节字符集,这将允许您使用 std::string。