MFC 注册表

文章目录

打开注册表

cpp 复制代码
void CREGDemoDlg::OnBnClickedBtnOpen()
{
	//打开注册表
	HKEY hKey;
	if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Baidu.com", 0, KEY_ALL_ACCESS, &hKey))
	{
		MessageBox(L"打开注册表失败");
		return;
	}
}

对注册表的键的操作

创建子键

cpp 复制代码
//创建子键
	HKEY hKey;
	DWORD dwDisposition;
	if (ERROR_SUCCESS != RegCreateKeyEx(HKEY_CURRENT_USER, L"Software\\Baidu.com\\12345", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDisposition))
	{
		MessageBox(L"创建失败");
	}

删除子键

cpp 复制代码
  //删除子键
	RegDeleteKey(HKEY_CURRENT_USER, L"Software\\Baidu.com\\12345");

遍历子键

cpp 复制代码
  //打开注册表
	HKEY hKey;
	if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\2345.com", 0, KEY_ENUMERATE_SUB_KEYS, &hKey))
	{
		MessageBox(L"打开注册表失败");
		return;
	}

	DWORD dwIndex = 0;
	TCHAR szName[MAX_PATH];
	LONG result;
	while (1)
	{
		result = RegEnumKey(hKey, dwIndex, szName, MAX_PATH);

		if (result == ERROR_NO_MORE_ITEMS || result == ERROR_INVALID_HANDLE)
			break;
		else
		{
			szName.Format(L"%s\r\n", szName);

			int nLength = m_edit.GetWindowTextLength();
			m_edit.SetSel(nLength, -1);

			m_edit.ReplaceSel(szName);
		}

		dwIndex++;
	}
	
	RegCloseKey(hKey);

对注册表值的操作

读取值

cpp 复制代码
	CString str;
	HKEY hKey;
	if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Baidu.com\\BaiduYunGuanjia", 0, KEY_ALL_ACCESS, &hKey))
	{
	
		str.Format(L"打开注册表失败.错误代号:%d",GetLastError());
		MessageBox(str);
		return;
	}

	DWORD dwType = REG_SZ;
	TCHAR szData[MAX_PATH] = {0};
	DWORD dwSize = 0;
	//操作两遍
	RegQueryValueEx(hKey, L"Version", NULL, &dwType,NULL, &dwSize);

	str.Format(L"第一次查询.错误代号:%d", GetLastError());
	MessageBox(str);

	RegQueryValueEx(hKey, L"Version", NULL, &dwType,(LPBYTE)szData, &dwSize);

	UpdateMsg(szData);
	RegCloseKey(hKey)
cpp 复制代码
void CREGDemoDlg::UpdateMsg(CString str)
{
	str.Format(L"%s\r\n", str);

	int nLength = m_edit.GetWindowTextLength();
	m_edit.SetSel(nLength, -1);

	m_edit.ReplaceSel(str);
}

设置值

cpp 复制代码
    CString str;
	HKEY hKey;
	if (ERROR_SUCCESS != RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hKey))
	{
		
		str.Format(L"打开注册表失败.错误代号:%d",GetLastError());
		MessageBox(str);
		return;
	}

	
	TCHAR szValue[MAX_PATH] = {0};
	GetModuleFileName(NULL, szValue, MAX_PATH);//设置开机自启动

	//RegSetValueEx(hKey, L"张三", 0, REG_SZ, (const BYTE*)szValue, MAX_PATH);//删除

	

	RegCloseKey(hKey);
相关推荐
_Twink1e5 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen
dong_junshuai6 小时前
每天一个开源项目#87 fmt:24.5K Stars 的 C++ 格式化核心
c++·开源·github
雪的季节7 小时前
Multisim14.0的详细中文安装步骤【附安装包】
c++
Persistent的粽子!8 小时前
C++:类与对象(二)
开发语言·c++
蒸蒸yyyyzwd8 小时前
cpp 选手备战秋招学习笔记 day23
c++·求职招聘
.YM.Z9 小时前
C++ STL 容器深度剖析:vector 与 list 的模拟实现及对比
开发语言·c++·vector·list
mengzhi啊10 小时前
QEventLoop loop配合loop.exec();替代while(1)。电脑cpu占用为0,使用while(1)cpu占用率100%
c++·qt
HugoStudio_SWAN10 小时前
洛谷 P1319 / P1320 压缩技术——同一枚硬币的正反面
c++·学习·程序人生·算法
小小晓.11 小时前
C++单例模式万字详解:6种实现演进+线程安全彻底解决+CRTP终极模板
c++·单例模式
j7~12 小时前
【C++11】C++11 新特性全套详解(列表初始化、右值引用、lambda 表达式、function 与 bind 包装器等)
c++·右值引用·lambda表达式·可变参数模板·移动语义·包装器·c++11发展史