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);
相关推荐
码农-阿杰7 分钟前
Java 线程等待唤醒机制深度解析:synchronized、ReentrantLock、LockSupport 底层实现对比
java·开发语言·c++
十五年专注C++开发42 分钟前
TypePerf:Windows 命令行性能计数器工具(CPU利用率、内存利用率、GPU利用率等)
c++·windows·typeperf
王老师青少年编程1 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:字符排序
c++·字符串·csp·高频考点·信奥赛·字符串排序·字符排序
杜子不疼.1 小时前
【 C++ AI 大模型接入 SDK】 - 日志模块
开发语言·javascript·c++
3Tony1 小时前
解决VScode报错:preLaunchTask“C/C++: gcc.exe 生成活动文件“已终止,退出代码为 -1.
c++·ide·vscode
C+++Python2 小时前
C++ 泛型编程 极简示例代码
开发语言·c++
宵时待雨2 小时前
回溯算法专题2:二叉树中的深搜
开发语言·数据结构·c++·笔记·算法·深度优先
计算机安禾3 小时前
【c++面向对象编程】第21篇:运算符重载基础:语法、规则与不可重载的运算符
java·前端·c++
开发者联盟league3 小时前
在cursor中配置c/c++开发环境
c语言·开发语言·c++
澈2073 小时前
平衡二叉树:AVL与红黑树终极对比
数据结构·c++·红黑树