Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
存在返回ERROR_SUCCESS = 0,HKEY为打开的键
不存在返回错误码
存在返回ERROR_SUCCESS = 0,HKEY为打开的键
不存在返回错误码
解决方案 »
- 希望高手帮忙解决”实时错误3021,BOF或EOF有一个为真。”
- VB6中对称加密解密问题?
- 好心人帮帮忙~急哭了~关于短信控件!最后40分了~
- 怎样从VB转到html?
- 怎样用vb实现屏幕旋转180度效果???
- 我的vb程序在98,2000下访问mysql飞快,在XP下硬盘狂转,WHY??????
- 有个难题!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 哪位高手知道GetDiBits和SetDiBits函数怎么用?
- check按钮和option按钮之间的相似之处和不同之处是什么?急!!!
- 我要多少月薪?SOS!!
- Visual Basic能不能用代码在Form中添加一个按钮对象,或者picturebox对象?
- 怎么用SLEEP函数来设置CPU的空闲时间?
ByVal lpSubKey As String,键路径字符串比如"software/microsoft"不能以“/”开始
ByVal ulOptions As Long,选项你可以使用table2中任意值,一般设0
ByVal samDesired As Long,对新键操作权限的设置,使用table3中的任意值,建议用KEY_ALL_ACCESS就是了
phkResult As Long,这里是操作成功返回的新键
) As Long
//table 1
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 HKEY_PERFORMANCE_DATA = &H80000004
//table 2
Public Const REG_OPTION_BACKUP_RESTORE = 4 ' open for backup or restore
Public Const REG_OPTION_CREATE_LINK = 2 ' Created key is a symbolic link
Public Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Public Const REG_OPTION_RESERVED = 0 ' Parameter is reserved
Public Const REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
//table 3
Public Const KEY_CREATE_LINK = &H20
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_EVENT = &H1 ' Event contains key event record
Public Const KEY_NOTIFY = &H10
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Public Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
怎么判断?
是一样的方法吗?我想判断一个没有值的键是否存在,如何写代码?
答对了我另外开贴给你加分,说到做到。例如有个字符型的键,内容为空
我怎么知道它是内容为空还是根本没这个键呢?
请给我详细代码,说出你想要的分数,可以的话,最好在100以内,谢谢
人总是要成长的,让我们大家一起在CSDN里成长为新一代的高手吧!
想吵架的人闪一边去,我们只来学习,不学习的请安静!!!
http://www.sqreg.com/file/vb/reg_01.htm
http://www.sqreg.com/file/vb/reg_02.htm
http://www.sqreg.com/file/vb/reg_03.htm
http://www.sqreg.com/file/vb/reg_04.htm
http://www.sqreg.com/file/vb/reg_05.htm
http://www.sqreg.com/file/vb/reg_06.htm
http://www.sqreg.com/file/vb/reg_07.htm
Option Compare Text '这是注册表编辑器的排序方法Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegEnumKeyA Lib "advapi32.dll" (ByVal hKey As Long, ByVal dwIndex As Long, lpName As Any, ByVal cbName As Long) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, lpValueName As Any, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As LongPrivate Const REG_NONE = 0
Private Const REG_SZ = 1
Private Const REG_EXPAND_SZ = 2
Private Const REG_BINARY = 3
Private Const REG_DWORD = 4
Private Const REG_DWORD_BIG_ENDIAN = 5
Private Const REG_DWORD_LITTLE_ENDIAN = 4
Private Const REG_LINK = 6
Private Const REG_MULTI_SZ = 7
Private Const REG_RESOURCE_LIST = 8
Private Const REG_FULL_RESOURCE_DESCRIPTOR = 9
Private Const REG_RESOURCE_REQUIREMENTS_LIST = 10Public Enum RegDataType
RDT_None = REG_NONE
RDT_SZ = REG_SZ
RDT_Expand_SZ = REG_EXPAND_SZ
RDT_Binary = REG_BINARY
RDT_DWord = REG_DWORD
RDT_DWord_Big_Endian = REG_DWORD_BIG_ENDIAN
RDT_Multi_SZ = REG_MULTI_SZ
End EnumPrivate Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_USERS = &H80000003
Private Const HKEY_PERFORMANCE_DATA = &H80000004
Private Const HKEY_CURRENT_CONFIG = &H80000005
Private Const HKEY_DYN_DATA = &H80000006
Private Const HKEY_PERF_ROOT = HKEY_LOCAL_MACHINEPublic Enum RegRootKey
RRK_CLASSES_ROOT = HKEY_CLASSES_ROOT
RRK_CURRENT_USER = HKEY_CURRENT_USER
RRK_LOCAL_MACHINE = HKEY_LOCAL_MACHINE
RRK_USERS = HKEY_USERS
RRK_PERFORMANCE_DATA = HKEY_PERFORMANCE_DATA
RRK_CURRENT_CONFIG = HKEY_CURRENT_CONFIG
RRK_DYN_DATA = HKEY_DYN_DATA
End EnumPrivate Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_NOTIFY = &H10
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_LENGTH_MASK = &HFFFF0000Private Const READ_CONTROL = &H20000Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Const KEY_EXECUTE = (KEY_READ)Private Const ERROR_SUCCESS = 0&
Private Const ERROR_MORE_DATA = 234Public RegError As LongPublic Function GetRegRootKeyName(RootKey As RegRootKey) As String
Select Case RootKey
Case RRK_CLASSES_ROOT: GetRegRootKeyName = "HKEY_CLASSES_ROOT"
Case RRK_CURRENT_USER: GetRegRootKeyName = "HKEY_CURRENT_USER"
Case RRK_LOCAL_MACHINE: GetRegRootKeyName = "HKEY_LOCAL_MACHINE"
Case RRK_USERS: GetRegRootKeyName = "HKEY_USERS"
Case RRK_PERFORMANCE_DATA: GetRegRootKeyName = "HKEY_PERFORMANCE_DATA"
Case RRK_CURRENT_CONFIG: GetRegRootKeyName = "HKEY_CURRENT_CONFIG"
Case RRK_DYN_DATA: GetRegRootKeyName = "HKEY_DYN_DATA"
End Select
End FunctionPublic Function RegCheckKey(ByVal RootKey As RegRootKey, _
Optional ByRef SubKey As String = vbNullString) As Boolean
Dim hKey As Long
If SubKey = "" Then SubKey = vbNullString
If Right(SubKey, 1) = "\" Then SubKey = Left$(SubKey, Len(SubKey) - 1)
If RegOpenKeyEx(RootKey, SubKey, 0, KEY_ALL_ACCESS, hKey) = ERROR_SUCCESS Then
RegCloseKey hKey
RegCheckKey = True
Else
RegCheckKey = False
End If
End FunctionPublic Function RegSplitKey(ByRef KeyPath As String, _
ByRef RootKey As RegRootKey, _
ByRef SubKey As String) As Boolean
Dim RootKeyStr As String
Dim I As Long
I = InStr(KeyPath, "\")
RootKeyStr = Left$(KeyPath, I - 1)
SubKey = Mid$(KeyPath, I + 1)
RootKeyStr = UCase$(RootKeyStr)
For I = RRK_CLASSES_ROOT To RRK_DYN_DATA
If RootKeyStr = GetRegRootKeyName(I) Then
RootKey = I
Exit For
End If
Next I
If I > RRK_DYN_DATA Then Exit Function
RegSplitKey = RegCheckKey(RootKey, SubKey)
End Function
你把键和值搞混了
其实KEY是注册表编辑器中所描述的“项”
而值是有二进制,双字节以及字符型区别的
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long,
ByVal lpValueName As String,
ByVal lpReserved As Long, 使用table2中的值一般为0
lpType As Long, 使用table4中的值,一般使用REG_SZ即字符串型
lpData As Any, 数据的接收指针,可以用个STRING或VARIANT
lpcbData As Long,返回了数据的字节数,记得减掉结尾的空字符
) As Long
//table 4
Private Const REG_NONE = 0
Private Const REG_SZ = 1
Private Const REG_EXPAND_SZ = 2
Private Const REG_BINARY = 3
Private Const REG_DWORD = 4
Private Const REG_DWORD_BIG_ENDIAN = 5
Private Const REG_DWORD_LITTLE_ENDIAN = 4
Private Const REG_LINK = 6
Private Const REG_MULTI_SZ = 7
Private Const REG_RESOURCE_LIST = 8
Private Const REG_FULL_RESOURCE_DESCRIPTOR = 9
Private Const REG_RESOURCE_REQUIREMENTS_LIST = 10这是对值进行查询的函数
不过我现在也只能对字符串型的值加以查询返回
二进制字串老是没有办法返回
注册表相关函数其实还有不少没法一一细解了
有什么可以发信给我我们可以一起研究
[email protected]
分就不必了
我又没用