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);
相关推荐
西哥写代码1 小时前
基于dcmtk的dicom工具 第四章 图像接受StoreSCP(2)
mfc·dicom·dcmtk·vs2017
古月-一个C++方向的小白6 小时前
C++11之lambda表达式与包装器
开发语言·c++
rainbow_lucky01068 小时前
MFC UI控件CheckBox从专家到小白
mfc·checkbox
tanyongxi668 小时前
C++ AVL树实现详解:平衡二叉搜索树的原理与代码实现
开发语言·c++
斯是 陋室10 小时前
在CentOS7.9服务器上安装.NET 8.0 SDK
运维·服务器·开发语言·c++·c#·云计算·.net
tju新生代魔迷11 小时前
C++:list
开发语言·c++
HHRL-yx11 小时前
C++网络编程 5.TCP套接字(socket)通信进阶-基于多线程的TCP多客户端通信
网络·c++·tcp/ip
tomato0911 小时前
河南萌新联赛2025第(一)场:河南工业大学(补题)
c++·算法
每一天都要努力^14 小时前
C++拷贝构造
开发语言·c++
NoirSeeker15 小时前
在windows平台上基于OpenHarmony sdk编译三方库并暴露给ArkTS使用(详细)
c++·windows·arkts·鸿蒙·交叉编译