首页
社区
课程
招聘
RegQueryValueEx读取注册表信息问题
发表于: 2010-3-2 22:59 4544

RegQueryValueEx读取注册表信息问题

2010-3-2 22:59
4544
	CString strInputValue;
	GetDlgItemText(IDC_EDIT1, strInputValue);               //得到我输入的信息
	HKEY hKey;
	if ( RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\PassWord", NULL, KEY_ALL_ACCESS, &hKey) )
	{
		CloseHandle(hKey);
		return;
	}

	CString strQueryValue;
	DWORD dwSize = sizeof(LPCTSTR);
	if ( RegQueryValueEx(hKey, L"PassWord", NULL, NULL, (LPBYTE)&strQueryValue, &dwSize) )   //读取注册表中的信息
	{
		CloseHandle(hKey);
		return;
	}

	if ( strQueryValue == strInputValue)         //判断输入的信息和注册表中的信息是否相等
	{
		MessageBox(L"Done");
	}
	else
	{
		MessageBox(L"");
	}

在读注册表信息时,strQueryValue得到的值显示不正确,是一串很长的乱码,请问怎么回事?
注册表保存的信息类型是REG_SZ
	

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该是你的RegQueryValueEx第五个参数不能用&CString。刚才试了一下你的代码:
CString strInputValue;
        GetDlgItemText(IDC_EDIT1, strInputValue);               //得到我输入的信息
        HKEY hKey;
        if ( RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\PassWord", NULL, KEY_ALL_ACCESS, &hKey) )
        {
                CloseHandle(hKey);
                return;
        }

        //CString strQueryValue;
        //DWORD dwSize = sizeof(LPCTSTR);
        TCHAR strQueryValue[32] = L"";
        DWORD dwSize = 32;
        if ( RegQueryValueExW(hKey, L"PassWord", NULL, NULL, (LPBYTE)strQueryValue, &dwSize) )   //读取注册表中的信息
        //if ( RegQueryValueW(hKey, L"PassWord",(LPWSTR)strQueryValue, (PLONG)&dwSize) )   //读取注册表中的信息
        {
                CloseHandle(hKey);
                return;
        }

        if ( strQueryValue == strInputValue)         //判断输入的信息和注册表中的信息是否相等
        {
                MessageBox(L"Done");
        }
        else
        {
                MessageBox(L"");
        }
在我这里可以通过,希望能帮到你
2010-3-3 10:05
0
游客
登录 | 注册 方可回帖
返回
//