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
zuchar*
. 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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erklären
lpValue
zuchar*
.Dann weisen Sie ihn mit einem Aufruf
new
.Reservieren Sie ein zusätzliches element bei der Registrierung von Daten mal gebildet und ist fehlt ein null-terminator. Das ist etwas, das passieren kann. Dann legen Sie das Letzte element zu
\0
:Dann erhält man den Wert:
Freigeben mit
delete[]
:RegGetValue()
stattRegQueryValueEx()
es befasst sich mit der null-terminator-Thema für Sie.