gpt4 book ai didi

c++ - 将 LPBYTE 转换为字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:17 25 4
gpt4 key购买 nike

我正在从注册表中查询数据,它被输出为 LPBYTE,这就是我遇到的问题。我需要将 LPBYTE 转换为一种我可以操作的数据类型,例如字符串。

到目前为止,这是我的代码

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;

任何帮助或代码示例将不胜感激。

最佳答案

您需要将lpValue声明为char*

char* lpValue;

然后调用 new 分配它。

lpValue = new char[dwSize+1];

分配一个额外的元素以防注册表数据格式错误并且缺少空终止符。这是可能发生的事情。然后将最后一个元素设置为\0:

lpValue[dwSize] = '\0';

然后获取值:

LONG getReg = RegQueryValueExA(..., (LPBYTE)&dwValue, ...);

使用delete[]解除分配:

delete[] lpValue;

关于c++ - 将 LPBYTE 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com