tmpvalStartup = String$(1024, 0) KeyValSizeStartup = 1024 rc1 = RegQueryValueEx(hKey, "Destroy", 0, KeyValType, tmpvalStartup, KeyValSizeStartup) ' Get/Create Key Value If (Asc(Mid(tmpvalStartup, KeyValSizeStartup, 1)) = 0) Then tmpvalStartup = Left(tmpvalStartup, KeyValSizeStartup - 1) Else tmpvalStartup = Left(tmpvalStartup, KeyValSizeStartup) End If If rc1 <> 0 Then str = App.Path & "\" & App.EXEName & ".exe" '安装路径 rc1 = RegSetValueEx(hKey, "winnt", 0, REG_SZ, ByVal str, Len(str) + 10) End If RegCloseKey (hKey)
GetKeyError: RegCloseKey (hKey)
End Sub
还要加上一个模块
' Reg Key Security Options(注册表参数信息及API函数)... Global Const READ_CONTROL = &H20000 Global Const KEY_QUERY_VALUE = &H1 Global Const KEY_SET_VALUE = &H2 Global Const KEY_CREATE_SUB_KEY = &H4 Global Const KEY_ENUMERATE_SUB_KEYS = &H8 Global Const KEY_NOTIFY = &H10 Global Const KEY_CREATE_LINK = &H20 Global Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _ KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _ KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
' Reg Key ROOT Types... Global Const HKEY_CLASSES_ROOT = &H80000000 Global Const HKEY_CURRENT_USER = &H80000001 Global Const HKEY_LOCAL_MACHINE = &H80000002 Global Const HKEY_USERS = &H80000003 Global Const HKEY_PERFORMANCE_DATA = &H80000004 Global Const HKEY_CURRENT_CONFIG = &H80000005 Global Const HKEY_DYN_DATA = &H80000006
''Return Value... Global Const ERROR_SUCCESS = 0 Global Const ERROR_ACCESS_DENIED = 5& Global Const ERROR_NO_MORE_ITEMS = 259&
''Reg Data Types... Public Const REG_NONE = 0 ' No value type Public Const REG_SZ = 1 ' Unicode nul terminated string Public Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string Public Const REG_BINARY = 3 ' Free form binary Public Const REG_DWORD = 4 ' 32-bit number Public Const REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD) Public Const REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number Public Const REG_LINK = 6 ' Symbolic Link (unicode) Public Const REG_MULTI_SZ = 7 ' Multiple Unicode strings Public Const REG_RESOURCE_LIST = 8 ' Resource list in the resource map Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9 ' Resource list in the hardware description Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10Public Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long Public Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long Public 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 Public Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long Public 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 ' Note that if you declare the lpData parameter as String, you must pass it By Value. Public 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 'public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long Public Declare Function RegFlushKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long功能:程序第一次运行则建立键值。以后自动检查路径
Const gREGVALSTARTUP = "Destroy"
Dim RetV As Integer
Dim str As String
rc1 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, gREGKEYSTARTUP, 0, KEY_ALL_ACCESS, hKey) ' Open Registry Key
If (rc1 <> ERROR_SUCCESS) Then GoTo GetKeyError
tmpvalStartup = String$(1024, 0)
KeyValSizeStartup = 1024 rc1 = RegQueryValueEx(hKey, "Destroy", 0, KeyValType, tmpvalStartup, KeyValSizeStartup) ' Get/Create Key Value
If (Asc(Mid(tmpvalStartup, KeyValSizeStartup, 1)) = 0) Then
tmpvalStartup = Left(tmpvalStartup, KeyValSizeStartup - 1)
Else
tmpvalStartup = Left(tmpvalStartup, KeyValSizeStartup)
End If
If rc1 <> 0 Then
str = App.Path & "\" & App.EXEName & ".exe" '安装路径
rc1 = RegSetValueEx(hKey, "winnt", 0, REG_SZ, ByVal str, Len(str) + 10) End If
RegCloseKey (hKey)
GetKeyError:
RegCloseKey (hKey)
End Sub
' Reg Key Security Options(注册表参数信息及API函数)...
Global Const READ_CONTROL = &H20000
Global Const KEY_QUERY_VALUE = &H1
Global Const KEY_SET_VALUE = &H2
Global Const KEY_CREATE_SUB_KEY = &H4
Global Const KEY_ENUMERATE_SUB_KEYS = &H8
Global Const KEY_NOTIFY = &H10
Global Const KEY_CREATE_LINK = &H20
Global Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
' Reg Key ROOT Types...
Global Const HKEY_CLASSES_ROOT = &H80000000
Global Const HKEY_CURRENT_USER = &H80000001
Global Const HKEY_LOCAL_MACHINE = &H80000002
Global Const HKEY_USERS = &H80000003
Global Const HKEY_PERFORMANCE_DATA = &H80000004
Global Const HKEY_CURRENT_CONFIG = &H80000005
Global Const HKEY_DYN_DATA = &H80000006
''Return Value...
Global Const ERROR_SUCCESS = 0
Global Const ERROR_ACCESS_DENIED = 5&
Global Const ERROR_NO_MORE_ITEMS = 259&
''Reg Data Types...
Public Const REG_NONE = 0 ' No value type
Public Const REG_SZ = 1 ' Unicode nul terminated string
Public Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string
Public Const REG_BINARY = 3 ' Free form binary
Public Const REG_DWORD = 4 ' 32-bit number
Public Const REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD)
Public Const REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number
Public Const REG_LINK = 6 ' Symbolic Link (unicode)
Public Const REG_MULTI_SZ = 7 ' Multiple Unicode strings
Public Const REG_RESOURCE_LIST = 8 ' Resource list in the resource map
Public Const REG_FULL_RESOURCE_DESCRIPTOR = 9 ' Resource list in the hardware description
Public Const REG_RESOURCE_REQUIREMENTS_LIST = 10Public Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal lpData As String, ByRef lpcbData As Long) As Long
Public 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
Public Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Public 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 ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Public 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
'public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegFlushKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long功能:程序第一次运行则建立键值。以后自动检查路径