📄 vcc21.htm
字号:
<html>
<head>
<title>c++系列</title>
<meta content="text/html; charset=gb2312" http-equiv=Content-Type>
</head>
<p align="center"><script src="../../1.js"></script></a>
<body bgcolor="#ffffff" leftmargin="5" topmargin="1" marginheight="5" marginwidth="5">
<div align=center>
<table border=0 cellpadding=0 cellspacing=0 width=680 align="center">
<tbody>
<tr>
<td width=200 height="59">
</tr>
</tbody>
</table>
<table border=1 bordercolordark=#ffffff bordercolorlight=#ffffff cellpadding=0
cellspacing=0 width=685 align="center" height="70">
<tbody>
<tr>
<td bgcolor=#F9D23C height=14>
<div align=center class=H1> <b><b>注册表的应用与事例(下)</b></b></font></div>
</td>
</tr>
<tr valign=top>
<td class=H1 height=212>
<p align="left"><font color="#FF0000"> <span class="unnamed1">上篇我们说到数据类型。在注册表内只用到了这三种数据类型,还有其他的类型,但是不常用在这里我就不介绍啦。当使用到RegSetValue()来创建键的时候,VC会提供一些数据类型以及这些数据的数据指针,便于对键值的操作,而用户的程序可以保存二进制的任意类型,比如:结构类型,32值以及字符串等等。有一点需要注意,在编写WIN3.X程序时,注册表只支持REG——SZ类型的数据,这是在编程当中要注意的。<br>
在对数据类型有一定的了解以后,我们来看看如何对键值的管理。我们上篇已经讲过如何建键,如何打开一个已知的键以及如何删除他。而对键的操作要与我们上面讲到的数据类型来结合,你才能理解,下面函数的原型。<br>
<br>
4.RegQueryValueEx()<br>
原型:LONG RegQueryValueEx(<br>
HKEY hKey;<br>
LPTSTR lpValuename;<br>
LPDWORD lpReserved;<br>
LPDWORD lpType;<br>
LPBYTE lpData;<br>
LPDWORD lpcbData;<br>
)<br>
解释:返回指示注册表键的数据以及类型<br>
例子:DWORD dwSize = (DWORD) nSize;<br>
BOOL bRet = (::RegQueryValueEx( m_hKey, lpszValueName, NULL, NULL, (unsigned
char *) lpReturnBuffer, &dwSize ) == ERROR_SUCCESS );<br>
m_dwLastError = GetLastError();<br>
<br>
现在我们说到的这些函数都是对注册表进行管理的,而这个函数以及下面的函数在操作时候,是通过所需注册表的句柄来实现的。注册表的句柄由调用RegOpenKeyEx()和RegCreateKeyEx()函数得到的。而这个函数是用来读取注册表的一个已知的键值的。用这个函数可以得到所需键值的名称,并且返回一个数据,数据长度和数据类型。但是在这之前必须先获得这个注册表的句柄,句柄是通过RegOpenKeyEx()与RegCreateEx()函数来获得,当需要设置和修改时,用户调用这个函数。但是有一点要注意的是,为了使该函数可以访问,必须使用KEY_SET_VALUE权限来打开键。(这个权限是在RegCreateEx()或RegOpenKeyEx()函数内设置的)<br>
<br>
5.RegOpenKeyEx()<br>
原型:WINADVAPI LONG APIENTRY RegOpenaKeyEx(HKEY hKey,<br>
LPCTSTR lpSubKey,<br>
DWORD ulOptions,<br>
REGSAM samDesired,<br>
PHKEY phkResult);<br>
解释:打开指定的键或子键。返回的句柄用于进一步的访问。应使用RegCloseKey()关闭每个打开的键。<br>
例子:HKEY hKey;<br>
const char *lpszSubKey<br>
::RegOpenKeyEx( hKey, <br>
lpszSubKey,<br>
0,<br>
KEY_ALL_ACCESS,<br>
&m_hKey )<br>
<br>
这个函数没有什么好讲的。他的意思和他的名字一样好理解。就是打开一个给定正确路径的键或子键。我对这个函数简单的解释一下。hKey 在这里是根键的意思比如:HKE_CLASSES_ROOT,lpSubKey是指子键的名称,ulOptions是指定值,通常被定义为0,samDesired是指访问类型,不同的访问类型有不同的操作效果。PhkResult是指通过RegOpenKeyEx()函数来的到注册表的句柄,在通过句柄来进行操作。<br>
总结:<br>
对于注册表还有很多的东西要讲,但是主要用的是这些。大家在平时用到注册表的时候,希望多看看别人的例子。我在这里只说了5个函数其他函数,虽然没有讲不代表不重要在不久我还会为朋友们介绍些此类函数。大家也可以自己做一个自己喜欢的类,来完成更复杂的工作,总而言之希望大家多提宝贵意见。<br>
<br>
转载自CPCW程序方舟</span></font></font><font
color=#ffa000><b><br>
</td>
</tr>
</tbody>
</table>
</div>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -