CSDN博客

img s98

注册表编程扫盲(二)

发表于2004/10/5 23:58:00  1129人阅读

二。RegOpenKeyEx,以及RegCloseKey
    先说一下RegOpenKeyEx,看字面的意思就知道是打开一个键,由于RegCreateKeyEx也可以打开一个键的,所以这个函数就有点那个了。不过这个函数比RegCreateKeyEx简单n倍,所以还是很有用的了。它是这样声明的:
LONG RegOpenKey(HKEY hKey,LPCTSTR lpSubKey,PHKEY phkResult);
一看,这些参数是不是很熟悉了啊?hKey,lpSubKey,phkResult的意思和RegCreateKeyEx函数中这些参数的意思没什么两样了。这里不多说了,到上一节去看看就知道了。返回值还是老样子,ERROR_SUCCESS就表示成功打开了。
    再来看看RegCloseKey,很简单,只有一个参数:
LONG RegCloseKey(HKEY hKey) 就是关闭一个键了,关闭一个键以后,句柄就没用了。我不知道关闭一个键了和不关有什么不同,不过养成随时关闭的习惯总是有好处的。返回值?不用说,同上。

三。RegSetValueEx
    RegSetValueEx,也就是已经知道一个键句柄了,对这个键的数据进行新建或改写。就好象已经知道一个文件夹,然后对其中的文件改动。一看就知道很有用了。对一些系统的数据改动的话,可以产生很牛的效果!!!啊,真是振奋人心啊!!!不过不要乱改啊,把系统该坏了别找我啊。少说废话了,看一下怎么用的:
LONG RegSetValueEx(
  HKEY hKey,         
  LPCTSTR lpSubKey,
  DWORD Reserved,
  DWORD dwType, 
  LPCTSTR lpData,
  DWORD cbData 
);
hKey:不用说了吧?
lpSubKey:字符串,就是你要设置的数据项的名字了,就好象文件名那样。
Reserved:没用,必须是0。
dwType:数据的类型,有很多种,我只说两种常用的了。REG_SZ和REG_DWORD,就是字符串型和DWORD(unsigned long)型了。一般就是这两种的。
lpData:就是你要设置的数据了,如果是字符串的话,先要把首地址强制转化成无符号型的指针,再传过去。如果是整数的话,先取地址,再强制转化成无符号型的字符指针,再串过去。
DWORD cbData:你要设置的数据的长度,如果是字符串型的,则是strlen+1。如果是整数就是4了。返回值同上。
还是举个例吧:
#include<windows.h>
void main()
{
 DWORD dwRes;
 HKEY hk;
 char szName[4]="我";
 DWORD dwScore=100;
 RegCreateKeyEx(HKEY_LOCAL_MACHINE,
               "SOFTWARE//Carrier Studio//Hello",  
0,                                  
NULL,                              
REG_OPTION_NON_VOLATILE,           
KEY_ALL_ACCESS,                    
NULL,                              
&hk,
                &dwRes
);
 RegSetValueEx(hk,"Name",0,REG_SZ,(LPBYTE)szName,3);
 RegSetValueEx(hk,"Score",0,REG_DWORD,(LPBYTE)dwScore,4);
 RegCloseKey(hk);
}
好了,写了这么多累死我了,先休息一下。



阅读全文
0 0

相关文章推荐

img
取 消
img