|
注册表的读写 |
|
| 来自: | 作者: |
| Option Explicit '注册表的入口常量 Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 '注册表的访问权限常量 Public Const KEY_QUERY_VALUE = &H1 Public Const KEY_SET_VALUE = &H2 Public Const KEY_CREATE_SUB_KEY = &H4 Public Const KEY_ENUMERATE_SUB_KEYS = &H8 Public Const KEY_NOTIFY = &H10 Public Const KEY_CREATE_LINK = &H20 Public Const KEY_ALL_ACCESS = &H3F '打开/建立键值的可选项常量 Public Const REG_OPTION_NON_VOLATILE = 0& Public Const REG_OPTION_VOLATILE = &H1 '建立新键或打开已存在的键常量 Public Const REG_CREATED_NEW_KEY = &H1 Public Const REG_OPENED_EXISTING_KEY = &H2 '预先定义的访问注册表的权限常量 Public Const STANDARD_RIGHTS_ALL = &H1F0000 Public Const SPECIFIC_RIGHTS_ALL = &HFFFF 'API的返回代码常量 Public Const ERROR_SUCCESS = 0& Public Const ERROR_ACCESS_DENIED = 5 Public Const ERROR_NO_MORE_ITEMS = 259 '返回数值类型常量 Public Const REG_NONE = (0) Public Const REG_SZ = (1) Public Const REG_EXPAND_SZ = (2) Public Const REG_BINARY = (3) Public Const REG_DWORD = (4) Public Const REG_DWORD_LITTLE_ENDIAN = (4) Public Const REG_DWORD_BIG_ENDIAN = (5) Public Const REG_LINK = (6) Public Const REG_MULTI_SZ = (7) Public Const REG_RESOURCE_LIST = (8) Public Const REG_FULL_RESOURCE_DESCRIPTOR = (9) Public Const REG_RESOURCE_REQUIREMENTS_LIST = (10) '访问注册表的API函数要用到的结构类型 Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Boolean End Type Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type '要用到的API函数声明 ………… 下面简单地介绍一下这几个API: RegOpenKeyEx():打开指定的关键字(32位); RegSetValueEx():在打开的注册表关键字的值域中存储数据; RegCloseKey():释放指定的关键字的句柄; RegQueryValueEx():在注册表中查找与您指定的键值相关的值; RegCreateKeyEx():建立并打开指定的关键字,若已存在则打开它; RegEnumKeyEx():枚举指定的打开注册表关键字的子关键字(32位); RegEnumKey():同上功能一样,区别在于它是16位的; RegEnumValue():每次调用枚举指定的打开注册表关键字的值复制一个带索引的值的名称和数据块; RegDeleteKey():删除一个关键字以及它的子关键字; RegDeleteValue():在指定的注册表关键字中删除一个带名字的值。 通过调用这些API我们可以轻松实现注册表的任意关键字的读取、查询、建立、删除。笔者在这里只打算介绍一下如何建立和删除一个特定的关键字。其它操作读者可以自己去发挥。 例如:要在“HKEY_LOCAL_MACHINE\Network“下建一个”MyApi“子键并在它的下面建立一个称为“yx”的值域,把它的值设为“yue1975”。我们应该按如下的方法调用API: Dim phkResult As Long '保存建立的关键字句柄 Dim lResult As Long Dim SA As SECURITY_ATTRIBUTES Dim lCreate As Long '建立一个指定的关键字 call RegCreateKeyEx(HKEY_LOCAL_MACHINE, _ "Network\MyApi",0,"",REG_OPTION_NON_VOLATILE, _ KEY_ALL_ACCESS, SA, phkResult, lCreate) lResult=RegSetValueEx(phkResult,"yx",0, _ REG_SZ, "yue1975",CLng(Len("yue1975") + 1)) '关闭关键字 RegCloseKey phkResult 现在用注册表编辑器去查看一下注册表,一定生成了您所需的键值。 再例如:现在我想把刚才建立的键值删掉,那您只需如下调用即可: dim success as long sucess=RegDeleteKey(HKEY_LOCAL_MACHINE, _ "Network\MyApi") |
|