MFC 操作注册表


向注册表中添加值:

先创建键,再添加。

void CDlgLogOn::InitRegInfo()
{
	CRegKey key1;
	key1.Create(HKEY_CURRENT_USER, "software\\Test\\UserInfo");

	key1.Open(HKEY_CURRENT_USER, "software\\Test\\UserInfo");

	key1.SetStringValue("admin", "");
	key1.Close();
}

获取注册表值:

传入的参数是值名称。如上面的admin。

CString CDlgLogOn::GetKeyValue( CString strKeyName)
{
	CString strPwd;
	CRegKey key1;
	char szRet[MAX_PATH];
	memset(szRet, 0, MAX_PATH);
	DWORD dwLen = MAX_PATH;

	key1.Open(HKEY_CURRENT_USER, "software\\Test\\UserInfo");
	if(key1.QueryStringValue(strKeyName, szRet, &dwLen) == ERROR_SUCCESS)
	{
		strPwd = szRet;
		return strPwd;
	}

	return "123456abcdefg";
}

删除注册表中的值:

void CDlgLogOn::DeleteRegValue(CString val)
{
//删除注册表中的项
	CRegKey key1;
	key1.Open(HKEY_CURRENT_USER, "software\\Test\\UserInfo");
	key1.DeleteValue(val);
	
	key1.Close();
}

遍历某键下面的所有值:

传入值是键值,如上文的    "software\\Test\\UserInfo"

void CDlgLogOn::EnumRegeditKeyVal( CString strKeyName )
{
	DWORD wStrSize = 512;
	CString strValue;
	TCHAR *wStr = new TCHAR[wStrSize];
	DWORD dwCountOfSubKey;
	DWORD dwCountOfValue;
	DWORD dwType;
	LONG lResult;
	DWORD dwLen = MAX_PATH;
	char szRet[MAX_PATH];
	memset(szRet, 0, MAX_PATH);

	CRegKey regKey;
	regKey.Open(HKEY_CURRENT_USER, strKeyName);
	lResult = ::RegQueryInfoKey(regKey.m_hKey, NULL, NULL, NULL,
		&dwCountOfSubKey, NULL, NULL, &dwCountOfValue, NULL, NULL, NULL, NULL);

	if (lResult != ERROR_SUCCESS)
		return ;

	for (int i = 0; i < dwCountOfValue; ++i)
	{
		wStrSize = 512;
		dwLen = MAX_PATH;
		//必须要在循环体内重新设置该值,因为wStrSize每次会被RegEnumValue改变,用来接受下一个wStr
		//如果不重新设置,你会发现遍历只能进行一两次
		lResult = RegEnumValue(regKey.m_hKey, i, wStr, &wStrSize, NULL, &dwType,NULL, NULL);
		if(regKey.QueryStringValue(wStr, szRet, &dwLen) == ERROR_SUCCESS)
		{
			CString strPwd = szRet;
		}
	}
	delete []wStr;
	regKey.Close();
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值