Konvertieren LPBYTE in String

Bin ich die Abfrage von Daten aus der registry und es wird ausgegeben, wie LPBYTE, und das ist, wo ich stecken geblieben bin. Ich brauche zum konvertieren der LPBYTE in eine Art von Daten, die ich manipulieren kann wie ein String.

Dies ist mein code bisher

HKEY hk;
string poolID;
DWORD dwSize     = 0;
DWORD dwDataType = 0;
DWORD dwValue;
LPBYTE lpValue   = NULL;
CA2W registryLocation("Software\\Example");
//Check registry if exists, otherwise create.
LONG openReg = RegOpenKeyEx(HKEY_CURRENT_USER, registryLocation, 0, KEY_QUERY_VALUE, &hk);
if (openReg==ERROR_SUCCESS) {  } else { cout << "Error (Could not open/create Registry Location)\n"; }
//Get buffer size
LONG getRegBuf = RegQueryValueExA(hk, "", 0, &dwDataType, lpValue, &dwSize);
if (getRegBuf==ERROR_SUCCESS) { cout << "Got reg key buf size\n"; } else { cout << "Error (registry key does not exist)/n"; intro(); }
lpValue = (LPBYTE)malloc(dwSize);
//Open reg value
LONG getReg = RegQueryValueExA(hk, "", 0, &dwDataType, (LPBYTE)&dwValue, &dwSize);
if (getReg==ERROR_SUCCESS) { cout << "Successful\n"; } else { cout << "Error\n"; }
cout << dwValue;

Jede Hilfe oder code-Beispiele, die sehr geschätzt wird.

  • Reservieren Sie ein char-array, und legen Sie es in dort. So erklären lpValue zu char*. Sie brauchen die Möglichkeit, dass die Daten in der registry ist nicht null beendet.
  • Ich habe versucht char* regValue = (LPBYTE)lpValue; jedoch VS meldet, dass ein Wert vom Typ LPBYTE kann nicht mit char *.
  • Lesen Sie einen DWORD-oder einen Puffer?
  • Es macht keinen Sinn zu werfen LBYTE zu einem LPBYTE. Verwenden char* regValue = (char*)lpValue; statt.
InformationsquelleAutor Ryan | 2012-12-22
Schreibe einen Kommentar