码迷,mamicode.com
首页 > Windows程序 > 详细

用C来注册表API编程

时间:2014-10-05 22:09:39      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   os   使用   ar   sp   2014   

注册表这个东西是个很好玩的东西,但是总是在一层一层的包含关系里找到需要的项真是有点麻烦,而且有谁会记住路径呢?

反正我是不会记的,写个小程序,让路径保存进代码里面。释放自己的大脑储存容量。

个人就以打开Windows 8 的Aero效果为例演示注册表API的简单编程。

流程

首先来熟悉一下简单的流程:

bubuko.com,布布扣

简单了解后就可以开始正题。

代码

bubuko.com,布布扣

这里准备了两个函数,这两个函数的代码几乎一样,只是修改的值不一样,所以下面本人只会对一个函数进行简单概述。

bubuko.com,布布扣

参数

这个函数里包括了三个参数,三者都是个人预设的,来自这里

bubuko.com,布布扣

注:这里提醒一下,上图的路径要用两个”\”,别忘了转义字符。

错误判断

打开或设置一个项,判断一下是否成功还是有必要的。如果成功会返回0,也可以用ERROR_SUCCESS。

使用函数

打开一个项用RegOpenKeyEx(),这里给出函数原型(来自MSDN):

bubuko.com,布布扣

第一个参数是系统预设值,HKEY型,注意这不是内核型的。这里列出所有预设值:

bubuko.com,布布扣

第二个参数是子路径。

第三个参数MSDN给出必须是0。

第四个参数设置了要操作的权限,可写或只读等。

第五个指针是输出,这里就必须要在前面定义一个HKEY型的变量,然后给出指针。

 

设置一个项的值用RegSetValueEx(),这里给出函数原型(来自MSDN):

bubuko.com,布布扣

第一个参数是一个已存在的或已打开的项,这里就是用了RegOpenKeyEx()打开项后的最后一个参数。

第二个参数是所要设置值的项名,知道项名可以使用这个函数。

第三个参数MSDN给出也必须为0.

第四个参数是预设的打开的方式,这里的REG_DWORD是32位的数。

第五个参数是要设置的值的BYTE类型,用强制类型把ValueOfAero这个整数值转换为BYTE类型。

第六个参数则是设置值的长度,直接用sizeof()获取ValueOfAero的长度即可。

 

到这里到了最后一个步骤,关闭打开项,直接用RegCloseKey(),参数为已打开的项。

最后注销系统(其实关闭“桌面窗口管理器”就可以了,但我不知道怎么做)就可以打开了Aero效果。不国个人感觉这样打开的效果不是很完美,但注册表编程的目的已达到。

 

bubuko.com,布布扣

 

扩展

因为两个函数代码一样,这样就可以在写多一个函数,实现相同部分的代码,实现代码的重复使用,也简化一些代码,这个也很容易实现,我就不说明了。

还有,可以在代码中加入报错功能,GetLastError()就可以轻易实现,当然你也可以再把报错码转换成文字错误。

最后

最后贴出两个函数的具体参数链接(更多的操作函数都可以在MSDN查询到,真是个好地方)

RegOpenKeyEx():

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897(v=vs.85).aspx

RegSetValueEx():

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724923(v=vs.85).aspx

用C来注册表API编程

标签:des   style   blog   http   os   使用   ar   sp   2014   

原文地址:http://www.cnblogs.com/NomyfanChan/p/c_api_programming.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!