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 LongPrivate Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As LongPrivate Const HKEY_CURRENT_USER = &H80000001Private Sub Command1_Click()
Dim ret As Long,hKey As Long
ret = RegOpenKeyEx(HKEY_CURRENT_USER, "Console", 0, 0, hKey)
If ret <> 0 Then
MsgBox ret
Exit Sub
End If
RegCloseKey hKey
End Sub
我在XP环境下运行的,RegOpenKeyEx老是调用不成功,返回值是5
请问我的掉用对么?为什么会产生这样的结果啊?谢谢!
Dim ret As Long,hKey As Long
ret = RegOpenKeyEx(HKEY_CURRENT_USER, "Console", 0, 0, hKey)
If ret <> 0 Then
MsgBox ret
Exit Sub
End If
RegCloseKey hKey
End Sub
我在XP环境下运行的,RegOpenKeyEx老是调用不成功,返回值是5
请问我的掉用对么?为什么会产生这样的结果啊?谢谢!
说明
打开一个现有的项。在win32下推荐使用这个函数
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
参数表
参数 类型及说明
hKey Long,一个已打开项的句柄,或指定一个标准项名
lpSubKey String,欲打开注册表项的名字
ulOptions Long,未用,设为零
samDesired Long,带有前缀KEY_??的一个或多个常数。它们的组合描述了允许对这个项进行哪些操作
phkResult Long,用于装载打开项的名字的一个变量
Option ExplicitPrivate 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 LongPrivate Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const STANDARD_RIGHTS_ALL = &H1F0000
Private Const READ_CONTROL = &H20000
Private Const KEY_QUERY_VALUE = &H1
Private Const HKEY_CURRENT_USER = &H80000001
Private Const KEY_SET_VALUE = &H2
Private Const KEY_CREATE_LINK = &H20
Private Const KEY_CREATE_SUB_KEY = &H4
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const KEY_EVENT = &H1
Private Const KEY_NOTIFY = &H10
Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Private Const REG_DWORD = 4
Private Const REG_BINARY = 3
Private Const REG_CREATED_NEW_KEY = &H1
Private Const REG_NONE = 0Private Const REG_SZ = 1Private 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_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 Sub Command1_Click()
Dim ret As Long, hk As Long
ret = RegOpenKeyEx(HKEY_CURRENT_USER, "Console\ColorTable00", 0, KEY_READ, hk)
If ret <> 0 Then
MsgBox ret
Exit Sub
End If
RegCloseKey hk
End Sub
Option ExplicitPrivate 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 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 Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const KEY_SET_VALUE = &H2
Private Const REG_SZ = 1Public Sub SetStartUp(ByVal b_start As Boolean)
On Error GoTo ErrorHandle
Dim l_Ret As Long, l_Hnd As Long, l_Len As Long
Dim str_Key As String, str_Data As String
str_Key = "software\microsoft\windows\currentversion\run"
l_Ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, str_Key, 0&, KEY_SET_VALUE, l_Hnd)
If l_Ret = 0 Then
If b_start Then
str_Data = App.Path & "\OAPOP.exe"
Else
str_Data = ""
End If
l_Len = Len(str_Data)
l_Ret = RegSetValueEx(l_Hnd, "OAPOP", 0&, REG_SZ, ByVal str_Data, l_Len)
End If
l_Ret = RegCloseKey(l_Hnd)
Exit Sub
ErrorHandle:
If Err.Number <> 0 Then
g_str_ErrNumber = Err.Number
g_str_ErrSource = Err.Source
g_str_ErrDesc = Err.Description
g_WriteLog g_str_ErrDesc
Err.Clear
End If
End Sub