0

レジストリにいくつかの操作を書いていますが、これで 2 日間行き詰まりました。それを解決する方法が本当にわかりません。だから、その私のコード:

 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 からそれを行う方法が本当にわかりません。これを修正するのを手伝ってもらえますか? :) ありがとうございました!

4

1 に答える 1

0

プロジェクトがユニコードに設定されている場合にのみ、RegCreateKeyEx は LPCWSTR を必要とします。Unicode プロジェクトが必要な場合は、std::string の代わりに std::wstring を使用します。Unicode プロジェクトが必要ない場合は、プロジェクトの Character Set 設定を Multi-Byte Character Set に変更して、std::string を使用できるようにします。

于 2013-09-11T15:46:32.847 に答える