C/C++读写注册表中二进制数据 Windows API 提供了一组函数来操作注册表中的键值对,包括读写二进制数据。下面我们将详细介绍使用 RegOpenKeyEx() 函数和 RegSetValueEx() 函数来实现对注册表某项写入二进制键值。 一、RegOpenKeyEx() 函数 RegOpenKeyEx() 函数用于打开指定的键或子键,如果不存在则不建立。该函数的原型如下: LONG RegOpenKeyEx( HKEY hKey, // 要打开主键名 LPCTSTR lpSubKey, // 需要打开的子键或路径 DWORD ulOptions, // 保留,为0 REGSAM samDesired, // 操作权限标志 PHKEY phkResult // 指向你打开键的句柄(通过指针返回) ); 返回值:不成功返回非0,成功返回ERROR_SUCCESS。 在使用 RegOpenKeyEx() 函数时,需要指定要打开的主键名和子键或路径,并设置操作权限标志。例如,要打开 HKEY_CURRENT_USER 下的某个子键,可以使用以下代码: HKEY hKey; HKEY rootKey = HKEY_CURRENT_USER; TCHAR *subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"; long openReg = RegOpenKeyEx(rootKey, subKey, 0, KEY_WRITE, &hKey); 二、RegSetValueEx() 函数 RegSetValueEx() 函数用于设置某子键下特定名称的值。该函数的原型如下: LONG RegSetValueEx( HKEY hKey, // 已打开的键的句柄 LPCTSTR lpValueName, // 要查询值的名称,传如\"\"为查询键下的默认值 DWORD Reserved, // 保留 DWORD dwType, // 写入键值的类型 CONST BYTE *lpData, // 变量数据的地址 DWORD cbData // 变量的长度 ); 返回值:不成功返回非0,成功返回ERROR_SUCCESS。 在使用 RegSetValueEx() 函数时,需要指定要设置的值的名称、类型和数据地址。例如,要设置某子键下名为 "order" 的值,可以使用以下代码: BYTE value[256] = "c:\\test.exe"; DWORD dwType = REG_BINARY; long setRegValue = RegSetValueEx(hKey, _T("order"), 0, dwType, value, 256); 三、代码示例 下面是一个完整的代码示例,演示如何使用 RegOpenKeyEx() 和 RegSetValueEx() 函数来写入二进制数据: #include <windows.h> #include <tchar.h> int main(void) { HKEY hKey; HKEY rootKey = HKEY_CURRENT_USER; TCHAR *subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" "\\MenuOrder\\Start Menu2\\Programs\\test"; TCHAR *keyValue = "c:\\test.exe"; long openReg; long setRegValue; openReg = RegOpenKeyEx(rootKey, subKey, 0, KEY_WRITE, &hKey); if (openReg == ERROR_SUCCESS) { BYTE value[256] = "c:\\test.exe"; DWORD dwType = REG_BINARY; setRegValue = RegSetValueEx(hKey, _T("order"), 0, dwType, value, 256); if (setRegValue == ERROR_SUCCESS) { MessageBox(NULL, _T("Write Sucess"), _T("call"), MB_OK); } else { MessageBox(NULL, _T("Write Fail"), _T("call"), MB_OK); } } else { MessageBox(NULL, _T("Open Key Fail"), _T("call"), MB_OK); } return 0; } 四、结论 本文主要介绍了使用 Windows API 函数中的 RegOpenKeyEx() 函数和 RegSetValueEx() 函数来实现对注册表某项写入二进制键值。通过使用这两个函数,可以轻松地读写注册表中的键值对,包括二进制数据。















- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2023年职称计算机考试Excel模块题库答案.doc
- 企业培训与互联网+的融合创新探索.docx
- 互联网+智慧社区整体解决方案.doc
- 软件技术服务合同5篇(1).docx
- 2022计算机及应用求职信.docx
- 计算机程序设计(C语言)课程设计报告.doc
- ic后端面试题(最新整理).pdf
- Matlab神经网络.ppt
- ASP.NET-MVC下拉框联动实例解析.doc
- 初中信息技术教学中深度学习的实现教研课题论文开题结题中期报告(反思经验交流).docx
- 2023年油田招工资料计算机基础知识理论.doc
- 六章结构化程序设计学习资料.ppt
- 《ArcGis介绍》.ppt
- 2023年通信概论串讲笔记.doc
- 移动通信光缆线路工程竣工资料模版调整版分析.doc
- java自我介绍的英文面试.docx


