`
isiqi
  • 浏览: 16028229 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

VC操作注册表函数

阅读更多

最近在做一个项目的时候使用到一些操作注册表的函数,现将这些函数记录以下,以方便以后使用

1. 打开注册表键
LONG RegOpenKeyEx(
HKEY hKey, // handle to open key主键
LPCTSTR lpSubKey, // subkey name子键
DWORD ulOptions, // reserved。必须是0
REGSAM samDesired, // security access mask读写标识
PHKEY phkResult // handle to open key返回的HKEY类型的指针。以后,读写,关闭用这个指针
);

如:
// 打开HKEY_LOCAL_MACHINE主键下的SoftWare\\Cleaner\\Cleaner子键
HKEY hKEY;
HKEY hKeyRoot = HKEY_LOCAL_MACHINE;
long ret0=(::RegOpenKeyEx(hKeyRoot,"SoftWare\\Cleaner\\Cleaner",0,KEY_READ,&hKEY));
if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
{
AfxMessageBox("错误:无法打开有关的hKEY");
return;
}

2. 读取注册表
LONG RegQueryValueEx(
HKEY hKey, // handle to key打开注册表指针
LPCTSTR lpValueName, // value name要读取的键名称
LPDWORD lpReserved, // reserved must be NULL. 必须是NULL
LPDWORD lpType, // type buffer,键类型。我最常用REG_SZ,REG_DWORD
LPBYTE lpData, // data buffer。保存查询结果的缓冲区
LPDWORD lpcbData // size of data buffer。缓冲区大小
);
如:
// hKEY是上面打开时得到的指针。
LPBYTE getValue = new BYTE[80];//得到的键值
DWORD keyType = REG_SZ;//定义数据类型
DWORD DataLen = 80;//定义数据长度
CString strUser = _T("Version");//要查询的键名称
long ret1=::RegQueryValueEx(hKEY,strUser,NULL,&keyType,getValue,&DataLen);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}

3. 写注册表
LONG RegSetValueEx(
HKEY hKey, // handle to key。打开注册表的指针
LPCTSTR lpValueName, // value name 要写入的键
DWORD Reserved, // reserved 必须是0
DWORD dwType, // value type 写入值类型
CONST BYTE *lpData, // value data 要写入的数据
DWORD cbData // size of value data 。数据SIZE
);
如:
// 写注册表。修改Version为1.0.12
// 写入CString类型的数据
CString strVersion = _T("Version");//要写入的键名称
LPCTSTR strVersionValue = "1.0.12";
long ret = ::RegSetValueEx(hKEY, strVersion, 0, REG_SZ, (const BYTE *) strVersionValue, strlen(strVersionValue)+1);
if(ret!=ERROR_SUCCESS)
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
[/code]

4. 创建一个新键
LONG RegCreateKeyEx(
HKEY hKey, // handle to open key。打开的注册表指针
LPCTSTR lpSubKey, // subkey name。子键名称
DWORD Reserved, // reserved。必须为0
LPTSTR lpClass, // class string。已经存在时用,一般为NULL
DWORD dwOptions, // special options
//默认值REG_OPTION_VOLATILE,保存在注册表,下次开机仍然存在
//REG_OPTION_VOLATILE,保存在内存
//REG_OPTION_BACKUP_RESTORE
REGSAM samDesired, // desired security access。操作权限。一般KEY_ALL_ACCESS,除非有特殊需要,请查阅MSDN
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance。继承性。一般为NULL
PHKEY phkResult, // key handle 。返回该键值镇。
LPDWORD lpdwDisposition // disposition value buffer
//REG_CREATED_NEW_KEY The key did not exist and was created.
//REG_OPENED_EXISTING_KEY The key existed and was simply opened without being changed.

);

5. 删除一个键
LONG RegDeleteKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey // subkey name
);

6. 删除一个键值
LONG RegDeleteValue(
HKEY hKey, // handle to key
LPCTSTR lpValueName // value name。值名称,不是打开的那个指针,是查询到的指针,如果为空RegSetValueEx创建的值将被删除
);

7. 刷新注册表
LONG RegFlushKey(
HKEY hKey // handle to key to write。写入所有的值,在给定的指针
);

//这个函数是将改变数据直接写到硬盘上,不要频繁使用,会影响性能

8. 导入一个注册表文件到指定的键下
LONG RegLoadKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // subkey name
LPCTSTR lpFile // registry file name
);

//没有用

9. 关闭打开的注册表
LONG RegCloseKey(
HKEY hKey // handle to key to close
);

//打开的注册表的指针需要注意关闭释放

分享到:
评论

相关推荐

    VC RegQueryValueEx注册表读取写入操作范例.rar

    与大家分享一个VC 简单操作注册表的范例,主要... 涉及到VC 中的RegQueryValueEx函数、RegCloseKey、RegDeleteKey、RegCreateKey等函数,这些函数在VC 中,是比较常见的操作注册表的函数,很有必要掌握使用技巧哦。

    VC读写注册表

    主要讲述了vc中队注册表的读写操作,里面有具体的函数以及实现方法

    vc++操作注册表Regedit.zip

    vc++操作注册表Regedit.zip visual c++注册表编辑器

    封装有关注册表操作的函数

    一个封装有关注册表操作的函数的类,相当详细,很好用的,想操作注册表的快下吧

    VC注册表API应用

    向注册表中添加键值,演示注册表函数的使用方法

    VC 读注册表获取安装程序(修改版)

    网友小罗6327上传的VC 读注册表获取安装程序源码有一处错误,导致部分安装程序名显示不对,现做修改并重新上传,修改部分见SoftwareViewDlg.cpp中的CSoftwareViewDlg::GetSoftwareInfo函数。再次向小罗6327致敬。

    vc6.0创建和删除注册表(模拟安装卸载程序)

    一个简单的例子,模拟安装卸载程序,创建一个注册表,及调用递归函数删除注册表

    VC API常用函数简单例子大全(1至89)

    VC 注册表 INI文件 屏幕截图 远程注入 安装钩子,各种各样的函数应有尽用

    CIniFile.rar_CIniFile_vc ini类_操作ini

    在读写ini配置文件时,往往同学们直接使用系统自带的api函数GetPrivateProfileString,这个api函数会在代码实现内部对windows注册表进行操作。但商业环境下,往往会对系统的注册表操作权限进行设置,那么这个函数将...

    VC++读写文件和注册表的源程序

    摘要:VC/C++源码,文件操作,文件读写 VC++读文件、写文件与读注册表、写注册表的简单实例,代码中可展现出const char *与char * const的区别。C语言对文件读写的支持,FILE指针;文本文件和二进制文件的区别。用文本...

    注册表查看编辑器 + 源码

    里面有一个封装了操作注册表的类CRegKey。 里面还有一个截图软件,其两个附加功能或许对你日常生活有帮助,一个是VC的error lookup程序的功能,一个是表达式计算器的功能,你可以在其托盘隐藏时使用热键Ctrl+F8和...

    VC 文件串行化示例.rar

    VC 文件串行化示例,源代码下载,涉及到的知识点:C语言对文件读写的支持,FILE指针;文本文件和二进制文件的区别。用文本方式读写文件和以二进制方式读写文件的注意事项。C 对文件读写的支持,ofstream和ifstream的...

    VC 资源管理器-无限级树型菜单.rar

    一个比较早的代码了,VC 资源管理器-无限级树形菜单,本程序所用压缩函数库在子目录zipfunc中,在zipfunc目录下,有两个子目录分别包含Release版和Debug版的zipfunc.lib,两者都是共享链接库编译生成.同样,主程序的链接...

    VC学习大纲 VC学习讲义

    VC工程的编译原理与过程,将工程中不同的类拆分到不同的原文件中,每一个类由一个.h和.cpp文件共同完成,然后解决头文件重复定义问题,培养了学员良好的编程习惯,也为以后分析MFC Appwizard生成的工程奠定了良好...

    Windows API函数大全

    4. API之打印函数 AbortDoc 取消一份文档的打印 AbortPrinter 删除与一台打印机关联...用VC 6.0实现串行通信的三种方法 windows运行命令详解 Windows API函数大全四 Windows API函数大全三 Windows API函数大全二

    VC http/https(包含单向认证、双向认证源码、SSL协议设置)

    支持设置启用的SSL\TLS的协议版本(暂未能找到API,故使用修改注册表的方式进行设置) 支持加载CA进行双向认证,传入CA时即启用双向验证 使用可参照PageNormal.cpp(该文件是我在实际工程中的调用代码)注意请求头...

    PC自动定时关机,VC

    多年前学习VC时写的一个可以设置电脑自动定时关机的程序。涉及系统关机函数,定时器,注册表和任务通知栏图标等操作,目前仍可在win7系统中正常运行,供练手参考。

    U盘记录与开关:源代码

    使用函数:MFC中的注册表操作函数. 功能:通过对注册表特定键值的读写来完成对U盘的操作--查U盘记录、禁用U盘和启用U盘,无“毒副作用”。 这是我学注册表操作时写的一个小程序,代码量不大。

    vc源代码合集.rar

    2012-06-11 08:57 9,174 C++注册表操作大全.txt 2012-06-11 08:37 113,664 CCheckListBox和CListBox.doc 2012-06-11 08:45 4,764,563 C库函数源代码.rar 2012-06-11 08:51 225,293 C指针详解(经典,非常详细).pdf ...

Global site tag (gtag.js) - Google Analytics