Я пишу несколько операций в реестре, и я застрял на два дня в этом. На самом деле не знаю, как решить это. Итак, мой код:
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 требует LPCWSTR, только если ваш проект настроен на Unicode. Если вам нужен проект в юникоде, тогда используйте std :: wstring вместо std :: string. Если вам не нужен проект Unicode, измените настройку набора символов проекта на Многобайтовый набор символов, что позволит вам использовать std :: string.
Других решений пока нет …