VB 判断注册表的项是否存在

要检查注册表HKEY_LOCAL_MACHINE\SOFTWARE\DeskLock\这个项是否存在该怎么写,要求写出代码,并给我将以下各个参量的意思,越通俗越好

PrivateDeclareFunction RegCloseKey Lib "advapi32.dll" (ByVal hKey AsLong)As LongPrivate Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey AsString, ByVal ulOptions As Long, ByVal samDesired As Long,phkresult As Long) As Long '从api中导出打开RegCloseKey,RegOpenKeyEx函数'RegOpenKeyEx打开注册表项返回Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码Const HKEY_LOCAL_MACHINE = &H80000002 '注册表根项都以常量表示Const ERROR_SUCCESS = 0& '注册表项打开成功,即返回值为0Const KEY_ALL_ACCESS = &H3F '打开权限,为完全控制Const reg1 = "SOFTWARE\DeskLock" '打开项的路径Dim phkresult As Long
Dim back As Long back = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg1, 0&,KEY_ALL_ACCESS,phkresult)
If back = ERROR_SUCCESS then MsgBox "注册表项存在!" RegCloseKey(phkresult) '关闭打开项的句柄Else MsgBox "该项不存在!"End If '下边是说明'  RegOpenKeyEx()'  函数功能描述:打开一个制定的注册表键,成功返回ERROR_SUCCESS(即0&);
'  函数原型:
'  LONG RegOpenKeyEx(
'  HKEY hKey, // 已经打开键的句柄或预设的键值
'  LPCTSTR lpSubKey, // 子键的名称
'  DWORD ulOptions, // 保留,填0
'  REGSAM samDesired, // 安全访问标记,代表权限
'  PHKEY phkResult // 指向将要打开键的句柄,一个long型变量
'  );
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-12
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long ’声明判断注册表项是否存在的API函数,他的使用方法下面说明Private Sub Command1_Click()
Dim ret As Long, hKey As Long
If RegOpenKey(HKEY_LOCAL_MACHINE, "\SOFTWARE\DeskLock", hKey) = 0& Then
MsgBox "HKEY_LOCAL_MACHINE\SOFTWARE\DeskLock这个项存在"
Else
MsgBox "HKEY_LOCAL_MACHINE\SOFTWARE\DeskLock这个项不存在"End IfEnd Sub
现在解释RegOpenKey的使用如果调用RegOpenKey检查注册表是返回值为0则表示存在,负责表示不存在;第一个参数是带有前缀HKEY_的那个变量第二个参数就是你要查找的具体的注册表项的名称第三个变量一般用不到,用0就可以
第2个回答  2018-07-05
RegOpenKeyEx

VB声明
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
说明
打开一个现有的项。在win32下推荐使用这个函数
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
参数表
参数 类型及说明
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpSubKey String,欲打开注册表项的名字
ulOptions Long,未用,设为零
samDesired Long,带有前缀KEY_??的一个或多个常数。它们的组合描述了允许对这个项进行哪些操作
phkResult Long,用于装载打开项的名字的一个变量本回答被网友采纳
第3个回答  2013-07-12
Option Explicit
Private Sub Form_Activate()
On Error GoTo ErrorMsg
Dim WshShell As Object, temp As String
Set WshShell = CreateObject("wscript.shell")
temp = "HKEY_LOCAL_MACHINE\SOFTWARE\DeskLock\"
WshShell.RegRead (temp)'如果无法读取直接产生一个错误,进入到errormsg显示信息
MsgBox "找到:" & temp
Exit Sub
ErrorMsg:
MsgBox "没有找到:" & temp
End Sub
相似回答