注册表的应用与事例(下)

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

注册表的应用与事例(下)

文/董毅

上篇我们说到数据类型。在注册表内只用到了这三种数据类型,还有其他的类型,但是不常用在这里我就不介绍啦。当使用到RegSetValue()来创建键的时候,VC会提供一些数据类型以及这些数据的数据指针,便于对键值的操作,而用户的程序可以保存二进制的任意类型,比如:结构类型,32值以及字符串等等。有一点需要注意,在编写WIN3.X程序时,注册表只支持REG——SZ类型的数据,这是在编程当中要注意的。

在对数据类型有一定的了解以后,我们来看看如何对键值的管理。我们上篇已经讲过如何建键,如何打开一个已知的键以及如何删除他。而对键的操作要与我们上面讲到的数据类型来结合,你才能理解,下面函数的原型。

4.RegQueryValueEx()

原型:LONG RegQueryValueEx(

HKEY hKey;

LPTSTR lpValuename;

LPDWORD lpReserved;

LPDWORD lpType;

LPBYTE lpData;

LPDWORD lpcbData;

)

解释:返回指示注册表键的数据以及类型

例子:DWORD dwSize = (DWORD) nSize;

BOOL bRet = (::RegQueryValueEx( m_hKey, lpszValueName, NULL, NULL, (unsigned char *) lpReturnBuffer, &dwSize ) == ERROR_SUCCESS );

m_dwLastError = GetLastError();

现在我们说到的这些函数都是对注册表进行管理的,而这个函数以及下面的函数在操作时候,是通过所需注册表的句柄来实现的。注册表的句柄由调用RegOpenKeyEx()和RegCreateKeyEx()函数得到的。而这个函数是用来读取注册表的一个已知的键值的。用这个函数可以得到所需键值的名称,并且返回一个数据,数据长度和数据类型。但是在这之前必须先获得这个注册表的句柄,句柄是通过RegOpenKeyEx()与RegCreateEx()函数来获得,当需要设置和修改时,用户调用这个函数。但是有一点要注意的是,为了使该函数可以访问,必须使用KEY_SET_VALUE权限来打开键。(这个权限是在RegCreateEx()或RegOpenKeyEx()函数内设置的)

5.RegOpenKeyEx()

原型:WINADVAPI LONG APIENTRY RegOpenaKeyEx(HKEY hKey,

LPCTSTR lpSubKey,

DWORD ulOptions,

REGSAM samDesired,

PHKEY phkResult);

解释:打开指定的键或子键。返回的句柄用于进一步的访问。应使用RegCloseKey()关闭每个打开的键。

例子:HKEY hKey;

const char *lpszSubKey

::RegOpenKeyEx( hKey,

lpszSubKey,

0,

KEY_ALL_ACCESS,

&m_hKey )

这个函数没有什么好讲的。他的意思和他的名字一样好理解。就是打开一个给定正确路径的键或子键。我对这个函数简单的解释一下。hKey 在这里是根键的意思比如:HKE_CLASSES_ROOT,lpSubKey是指子键的名称,ulOptions是指定值,通常被定义为0,samDesired是指访问类型,不同的访问类型有不同的操作效果。PhkResult是指通过RegOpenKeyEx()函数来的到注册表的句柄,在通过句柄来进行操作。

总结:

对于注册表还有很多的东西要讲,但是主要用的是这些。大家在平时用到注册表的时候,希望多看看别人的例子。我在这里只说了5个函数其他函数,虽然没有讲不代表不重要在不久我还会为朋友们介绍些此类函数。大家也可以自己做一个自己喜欢的类,来完成更复杂的工作,总而言之希望大家多提宝贵意见。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有