RegQueryValueEx函数不能获取到键值?

使用这个函数,返回值是0,但是获取到的键值只是字符串的第一个字母。这是为什么?谢谢。急求答案。

int _tmain(int argc, _TCHAR* argv[])
{

	const int  MAX_BUFFER_LEN = 80;
	char  szBuffer[MAX_BUFFER_LEN];
	DWORD dwNameLen;
	dwNameLen = MAX_BUFFER_LEN;

	TCHAR aa[800];
	if (!GetUserName(aa, &dwNameLen))  //得到计算机用户名 
	{
		return 1;
	}

HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
	//打开与路径 data_Set相关的hKEY
	LPCTSTR data_Set = _T("Software\\Platformbaseinfo\\AppUrl\\");
	//访问注册表,hKEY则保存此函数所打开的键的句柄
	long ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY));
	if (ret0 != ERROR_SUCCESS)//如果无法打开hKEY,打开指定注册表失败,则中止程序的执行,
	{
		return 1;
	}
	//查询有关的数据
	LPBYTE addr_Get = new BYTE[1024];//定义
	DWORD type_1 = REG_SZ;//定义数据类型
	DWORD cbData_1 = 1024;//定义数据长度
	long ret1 = ::RegQueryValueEx(hKEY, aa, NULL, &type_1, addr_Get, &cbData_1);
	if (ret1 != ERROR_SUCCESS)
	{
		return 1;
	}

	//得到注册表中地址信息
	delete[] addr_Get;
	//关闭打开的hKEY
	::RegCloseKey(hKEY);

return 0;
}

该段代码中要获取数据的变量就是addr_Get,但是这个变量只读取到键值字符串的第一个字母,这个是为啥?
 
 
解答:
代码改为 红色部分为改动。
int _tmain(int argc, _TCHAR* argv[])
{


	const int  MAX_BUFFER_LEN = 80;
	char  szBuffer[MAX_BUFFER_LEN];
	DWORD dwNameLen;
	dwNameLen = MAX_BUFFER_LEN;


	TCHAR aa[80];

	if (!GetUserName(aa, &dwNameLen))  //得到计算机用户名 
	{
		
		return 1;
	}
	


	HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
	//打开与路径 data_Set相关的hKEY
	LPCTSTR data_Set = _T("Software\\Platformbaseinfo\\AppUrl\\");
	//访问注册表,hKEY则保存此函数所打开的键的句柄
	long ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY));
	if (ret0 != ERROR_SUCCESS)//如果无法打开hKEY,打开指定注册表失败,则中止程序的执行,
	{
		
		return 1;
	}
	//查询有关的数据
	//LPBYTE addr_Get = new BYTE[1024];//定义
	TCHAR addr_Get[500];
	DWORD type_1 = REG_SZ;//定义数据类型
	DWORD cbData_1 = 1024;//定义数据长度
	
	
	long ret1 = ::RegQueryValueEx(hKEY, aa, NULL, &type_1, (LPBYTE)addr_Get, &cbData_1);
	if (ret1 != ERROR_SUCCESS)
	{
		return 1;
	}


	//得到注册表中地址信息
	
	//关闭打开的hKEY
	::RegCloseKey(hKEY);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值