将LPBYTE转换为字符串
Converting LPBYTE into String
我正在从注册表查询数据,它被输出为LPBYTE,这就是我卡住的地方。我需要将LPBYTE转换为一种我可以操作的数据类型,例如String。
这是我到目前为止的代码
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 sizen"; } 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 << "Successfuln"; } else { cout << "Errorn"; }
cout << dwValue;
任何帮助或代码示例将不胜感激。
您需要将lpValue
声明为char*
。
char* lpValue;
然后分配给new
。
lpValue = new char[dwSize+1];
在注册表数据格式错误且缺少空终止符的情况下分配额外的元素。这是可能发生的。然后将最后一个元素设置为