我在注册表中写了很少的操作,我在这里被困了两天。真的不知道该如何解决。所以,它是我的代码:
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 arg,但我真的不知道如何从std :: string中做到这一点。你可以帮我解决这个问题吗? :) 谢谢!
答案 0 :(得分:0)
仅当您的项目设置为unicode时,RegCreateKeyEx才需要LPCWSTR。如果你想要一个unicode项目,那么使用std :: wstring而不是std :: string。如果您不想要unicode项目,请将项目字符集设置更改为多字节字符集,这将允许您使用std :: string。