您的位置:首页 > 其它

Win32 API 常用函数之三——注册表操作(上)

2007-11-07 23:00 501 查看
【注册表操作】

RegOpenKeyEx


LONG RegOpenKeyEx(


HKEY hKey,


LPCTSTR lpSubKey,


DWORD ulOptions,


REGSAM samDesired,


PHKEY phkResult


);

打开一个指定的注册表项,值得注意的是注册表的键值是不区分大小写的。
第一个参数是主键,可以是预定义的键值,如HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS 这几个。
第二个参数是子键,指向一个字符串。当这个字符串为空或这指针为NULL时,他会打开hKey的值。
第三个参数保留。
第四个参数是一种权限,如常用的查询权限KEY_QUERY_VALUE,用于创建子键的KEY_CREATE_SUB_KEY,用于写的权限KEY_SET_VALUE等。
第五个参数是一个句柄,就像CreateEvent一样,返回了一个打开的注册表键,用完了就用它来关闭。
返回值表示成功或失败,成功则ERROR_SUCCESS,其他则表示出了些问题,在Winerror.h中定义。

RegCloseKey


LONG RegCloseKey(


HKEY hKey


);


用于关闭已经打开(RegOpenKeyEx)的或者创建出来(RegCreateKeyEx)的注册表键值的句柄。
这个操作类似closeHandle。

RegCreateKeyEx


LONG RegCreateKeyEx(


HKEY hKey,


LPCTSTR lpSubKey,


DWORD Reserved,


LPTSTR lpClass,


DWORD dwOptions,


REGSAM samDesired,


LPSECURITY_ATTRIBUTES lpSecurityAttributes,


PHKEY phkResult,


LPDWORD lpdwDisposition


);

创建一个注册表键值,如果该值已存在,则类似Open的行为。
第一个参数与RegOpenKeyEx相似。
第二个参数是要创建的子键的字符串。该值不可以为NULL,也不可以含有反斜线/,而且是不区分大小写的。
第三个参数保留。传入0即可。
第四个参数通常设置为NULL。
第五个参数默认设置为REG_OPTION_NON_VOLATILE,另外两个值REG_OPTION_BACKUP_RESTORE和REG_OPTION_VOLATILE有特殊的含义,详细信息见MSDN。
第六个参数与RegOpenKeyEx的相应参数含义一样。通常创建一个子键的行为需要Create权限,因为这个函数需要创建子键,但是他并不能设置这个子键的值,需要别的函数帮助。
第七个参数是安全级别,传入NULL为默认级别。
第八个参数是hanle。用于之后的操作。
第九个参数是一个传出参数,它标示了调用该函数是新建了一个子键REG_CREATED_NEW_KEY还是打开了一个原有子键REG_OPENED_EXISTING_KEY。
返回值同样是ERROR_SUCCESS表示成功,其他则表示有问题。

RegSetValueEx


LONG RegSetValueEx(


HKEY hKey,


LPCTSTR lpValueName,


DWORD Reserved,


DWORD dwType,


const BYTE* lpData,


DWORD cbData


);

创建了子键,需要给它赋以特定的值,该函数就是为子键赋值的。
第一个参数是目标键的handle。
第二个参数是值名称。NULL、空字符串都会导致一个匿名属性。
第三个参数保留。
第四个参数表示值的类型,常用的有二进制REG_BINARY、DWORD类型REG_DWORD、字符串REG_EXPAND_SZ等。
第五个参数是值内容。
第六个参数是值内容的大小,sizeof即可,不过当是字符串的时候,记得加1,来表示结尾符。

RegQueryValueEx


LONG RegQueryValueEx(


HKEY hKey,


LPCTSTR lpValueName,


LPDWORD lpReserved,


LPDWORD lpType,


LPBYTE lpData,


LPDWORD lpcbData


);

我们要读一个已经打开的键的值的时候,就需要这个函数。
第一个参数是目标键的handle。
第二个参数是值名称。
第三个参数保留。
第四个参数是值类型,同RegSetValueEx的类型含义相同。但是他是传出的,这时就有一个小技巧,当我们不知道一个键的值类型时,我们可以用这个参数第一次读出值的类型,后两个参数传入NULL和大小,这时读出了值的类型和值的大小,这样在第二次想确切的读出值的内容的时候,就可以分配恰好可用的空间。
第五个参数是传出参数,用于读出的数据。
第六个参数是传出参数的大小。

to be continued~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: