Nios.org

行列中 作不朽文章 谈笑间 论古今英雄 痴狂里 诉红尘情爱 来去时 不枉一生风流

用户操作
[即时聊天] [发私信] [加为好友]
niOsID:s98
89023次访问,排名1175,好友0人,关注者0人。
s98的文章
原创 109 篇
翻译 0 篇
转载 2 篇
评论 28 篇
niOs的公告
最近评论
sap99:www.sap99.com/,SAP99资料多多

SAP免费资料下载
http://www.sap99.com

有很多的学习资料,推荐一下,
CorelVBa:学习了,支持!
luo_373883269:代码怎么运行没反应啊

XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("bookstore.xml");
XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
XmlElement ……
lwhlau:我想把抓去的本地显示出来 ,但有不能显示原提交页的内容。只是地址栏还是提交页的地址
关于条形码可以看看奥华数码 www.RMB100.cn:关于条形码可以看看奥华数码 http://www.RMB100.cn
文章分类
收藏
相册
可爱妹妹
这哥们是我
P2P
P2P中国
TLF BT鏡像選擇
伊美姬网怡红快绿BitTorrent下载列表
技术站点
【linuxsir.org】Debian(RSS)
【linuxsir.org】Shell(RSS)
Linuxsir.org
MSDN 中文网站(RSS)
中国UNIX技术社区
中国XML论坛(RSS)
互联网实验室
维基百科
其他人的BLOG
CSDN电子杂志(RSS)
haibodotnet(RSS)
刘昕的 Blog
刻录事(RSS)
博客中国
开心就好的代码人生(RSS)
阿泰的软件实用主义(RSS)
下载
PC Pioneer 先锋网(RSS)
VeryCD.com(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 注册表编程扫盲(一)收藏

新一篇: 注册表编程扫盲(二) | 旧一篇: 注册表编程扫盲(二)

前言    
    今天看了一本注册表方面的书,觉得还不错。特别还写了一章注册表编程。呵呵,我现在就我的理解把它贴上来给大家分享一下:)
    什么是注册表我不用说了吧,反正大家都知道了。不知道?其实注册表就是...就是...就是那么回事了,具体我也说不清楚。有一点是可以肯定的,通过修改注册表可以产生很牛的效果,比如说自动运行啊,隐藏驱动器之类的,反正很多用拉,数不清的。又比如说现在有n多软件功能丰富,其实都是在把注册表改来改去。呵呵,说了这么多废话,不好意思,恩,现在开始吧。
    操作注册表主要还是要靠API了,我数一下,1,2,3,...很多,就写一些比较常用的吧。不知道为什么,有这么多的注册表API,MS却没有把它们封装成一个类,很不爽。好了,先介绍一个操作注册表的一个重要变量类型:HKEY,一看这个类型以H开头,就知道它是一个句柄。什么是句柄我也不太懂,但是好象凡是win32编程都要用到句柄,按定义的话句柄是一个void *,可是又和平时说的指针不太一样。不管怎么说,HKEY就是一个Handle to a registry key,MSDN上是这样写的。翻译过来应该是一个注册表键的句柄,不知道对不对,唉,都怪我E文没学好,让大家笑了。在操作注册表的时候都要用到一个这样的句柄。好了,说了这么多先介绍几个API吧。

一。RegCreateKeyEx
   恩,来看看RegCreateKeyEx吧,一看这个函数的字面意思就知道是创建一个键。如果这个键已经存在的话,就相当是把它打开了。对了,还有个概念没说,什么是键。其实我一句话也说不清就有点象一个文件夹那样的,还不懂的话...不说了。这个函数的声明是这样的:
LONG RegCreateKeyEx(
  HKEY hKey,                
  LPCTSTR lpSubKey,         
  DWORD Reserved,           
  LPTSTR lpClass,           
  DWORD dwOptions,          
  REGSAM samDesired,        
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  PHKEY phkResult,        
  LPDWORD lpdwDisposition   
);
我来数一数,1,2,3...我靠,一共九个参数,累死我了。这么多参数怎么用呢?看一下。
hKey:这是一个已经打开的键的句柄,看来是要在一个已经打开的键建立一个子键了。就好象在一个已经存在的目录下建立一个字目录一样。对了,如果你开始没有一个已经打开的键的句柄,怎么办呢?有办法的,hKey还可以是如下的值:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_PERFORMANCE_DATA(WinNT&&Win2K)
HKEY_DYN_DATA(Win98&&Win95&&WinMe)
其实一般情况下hKey的值都是这几种。具体是什么意思嘛,打开注册表编辑器就看见了:)打个比方就象你的电脑有A,C,D..几个盘一样,注册表也有几个这样的东西就是了。

lpSubKey:一个字符串,不用说是什么意思了吧?就是说你要把你的注册表键放在哪个位置了。有两点注意了,首先lpSubKey不能为NULL,还有就是(\),要写成(\\)。

Reserved:没什么用,必须是0。

lpClass:又是一个字符串,据说是指定你要建立的键的类型,我也不知道怎么用就设它为NULL算了。

dwOptions:对你建立的键的一些选项。可以是这些值:REG_OPTION_NON_VOLATILE,
REG_OPTION_VOLATILE,
REG_OPTION_BACKUP_RESTORE
第一个是默认的了。一般用第一个就可以了。

samDesired :好象是你对这个新建的键的访问权限了,笑话,我自己建的我我当然要设置为KEY_ALL_ACCESS,也就是想怎么样就怎么样的那种。

lpSecurityAttributes:很麻烦,懒得说了,反正也不是很重要,还是把它设为NULL。

phkResult:这可是个很重要的参数了,你建立一个键后,这个键的句柄就放在这里,以后操作就全靠它了。注意了,它是一个指向HKEY的指针。

lpdwDisposition:又是一个指针,调用完此函数后,可以通过它来检测是打开了一个已经存在的键(REG_OPENED_EXISTING_KEY),还是建立了一个键(REG_CREATED_NEW_KEY)。

还有一个问题,就是返回值的问题,如果返回ERROR_SUCCESS,也就是0了,恭喜恭喜,成功了。最后举个例吧:
#include<windows.h>
void main()
{
 DWORD dwRes;
 HKEY hk;
 RegCreateKeyEx(HKEY_LOCAL_MACHINE,
               "SOFTWARE\\Carrier Studio\\Hello",  
0,                                  
NULL,                              
REG_OPTION_NON_VOLATILE,           
KEY_ALL_ACCESS,                    
NULL,                              
&hk,
                &dwRes
);
 if (dwRes == REG_CREATED_NEW_KEY)
 {
   printf("new key!!\n");
 }
}

发表于 @ 2004年10月05日 23:58:00|评论(loading...)|编辑

新一篇: 注册表编程扫盲(二) | 旧一篇: 注册表编程扫盲(二)

评论

#CorelVBa 发表于2008-02-01 21:49:03  IP: 122.4.222.*
学习了,支持!
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © niOs