二。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);
}
好了,写了这么多累死我了,先休息一下。
先说一下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);
}
好了,写了这么多累死我了,先休息一下。