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);
相关推荐
blasit16 小时前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_2 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星2 天前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛4 天前
delete又未完全delete
c++
端平入洛5 天前
auto有时不auto
c++
哇哈哈20216 天前
信号量和信号
linux·c++
多恩Stone6 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马6 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
超级大福宝6 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
weiabc6 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法