27. april 2004 - 20:05
#1
Placer dette i et modul:
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Integer
End Type
Type FILETIME
dwLowDateTime As Long
dwHightDateTime As Long
End Type
Type VALENTA
ve_valuename As Long
ve_valuelen As Long
ve_valueprtr As Long
ve_type As Long
End Type
Public Declare Function adh_apiRegCloseKey _
Lib "ADVAPI32" Alias "RegCloseKey" _
(ByVal hKey As Long) As Long
Public Declare Function adh_apiRegConnectRegistry _
Lib "ADVAPI32" Alias "RegConnectRegistryA" _
(ByVal lpszComputerName As String, ByVal hKey As Long, _
ByRef phkResult As Long) As Long
Public Declare Function adh_apiRegCreateKey _
Lib "ADVAPI32" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpszSubKey As String, _
ByRef phkResult As Long) As Long
Public Declare Function adh_apiRegCreateKeyEx _
Lib "ADVAPI32" Alias "RegCreateKeyExA" _
(ByVal hKey As Long, ByVal lpszSubKey As String, _
ByVal dwReserved As Long, ByVal lpszClass As String, _
ByVal fdwOptions As Long, ByVal samDesired As Long, _
ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByRef phkResult As Long, _
ByRef lpdwDisposition As Long) As Long
Public Declare Function adh_apiRegDeleteKey _
Lib "ADVAPI32" Alias "RegKeyDeleteA" _
(ByVal hKey As Long, ByVal lpszSubKey As String) As Long
Public Declare Function adh_apiRegDeleteValue _
Lib "ADVAPI32" Alias "RegDeleteValueA" _
(ByVal hKey As Long, ByVal lpszValue As String) As Long
Public Declare Function adh_apiRegEnumKey _
Lib "ADVAPI32" Alias "RegEnumKeyA" _
(ByVal hKey As Long, ByVal iSubkey As Long, _
ByVal lpszName As String, ByVal cchName As Long) As Long
Public Declare Function adh_apiRegEnumKeyEx _
Lib "ADVAPI32" Alias "RegEnumKeyExA" _
(ByVal hKey As Long, ByVal iSubkey As Long, _
ByVal lpszName As String, ByRef lpcchName As Long, _
ByVal lpdwReserved As Long, ByVal lpszClass As String, _
ByRef lpcchClass As Long, _
ByRef lpftLastWrite As FILETIME) As Long
Public Declare Function adh_apiRegEnumValue _
Lib "ADVAPI32" Alias "RegEnumValueA" _
(ByVal hKey As Long, ByVal iValue As Long, _
ByVal lpszValue As String, ByRef lpcchValue As Long, _
ByVal lpdwReserved As Long, ByRef lpdwType As Long, _
lpbData As Any, ByRef lpcbData As Long) As Long
Public Declare Function adh_apiRegFlushKey _
Lib "ADVAPI32" Alias "RegFlushKey" _
(ByVal hKey As Long) As Long
Public Declare Function adh_apiRegGetKeySecurity _
Lib "ADVAPI32" Alias "RegGetKeySecurity" _
(ByVal hKey As Long, ByVal SecInf As Long, _
ByRef pSecDesc() As Byte, ByRef lpcbSecDesc As Long) _
As Long
Public Declare Function adh_apiRegLoadKey _
Lib "ADVAPI32" Alias "RegLoadKeyA" _
(ByVal hKey As Long, ByVal lpszSubKey As String, _
ByVal lpszFile As String) As Long
Public Declare Function adh_apiRegNotifyChangeKeyValue _
Lib "ADVAPI32" Alias "RegNotifyChangeKeyValue" _
(ByVal hKey As Long, ByVal fWatchSubTree As Integer, _
ByVal fdwNotifyFilter As Long, ByVal hEvent As Long, _
ByVal fAsync As Integer) As Long
Public Declare Function adh_apiRegOpenKeyEx _
Lib "ADVAPI32" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpszSubKey As String, _
ByVal dwReserved As Long, ByVal samDesired As Long, _
ByRef hKey As Long) As Long
Public Declare Function adh_apiRegQueryInfoKey _
Lib "ADVAPI32" Alias "RegQueryInfoKeyA" _
(ByVal hKey As Long, ByVal lpszClass As String, _
ByRef lpcchClass As Long, ByVal lpdwReserved As Long, _
ByRef lpcSubKeys As Long, ByRef lpcchMaxSubkey As Long, _
ByRef lpcchMaxClass As Long, ByRef lpcValeus As Long, _
ByRef lpcchMaxValueName As Long, _
ByRef lpcbMaxValueData As Long, _
ByRef lpcbSecurityDescriptor As Long, _
ByRef lpftLastWriteTime As FILETIME) As Long
Public Declare Function adh_apiRegQueryMultipleValues _
Lib "ADVAPI32" Alias "RegQueryMultipleValuesA" _
(ByVal hKey As Long, ByRef val_list As VALENTA, _
ByVal num_vals As Long, ByRef lpValueBuf() As Byte, _
ByRef ldwTotsize As Long) As Long
Public Declare Function adh_apiRegQueryValue _
Lib "ADVAPI32" Alias "RegQueryValueA" _
(ByVal hKey As Long, ByVal lpszSubKey As String, _
ByVal lpszValue As String, ByRef pcbValue As Long) As Long
Public Declare Function adh_apiRegQueryValueEx _
Lib "ADVAPI32" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpszValueName As String, _
ByVal lpdwReserved As Long, ByRef lpdwType As Long, _
lpbData As Any, ByRef lpcbData As Long) As Long
Public Declare Function adh_apiRegReplaceKey _
Lib "ADVAPI32" Alias "RegReplaceKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
Public Declare Function adh_apiRegRestoreKey _
Lib "ADVAPI32" Alias "RegRestoreKeyA" _
(ByVal hKey As Long, ByVal lpszFile As String, _
ByVal fdw As Long) As Long
Public Declare Function adh_apiRegSaveKey _
Lib "ADVAPI32" Alias "RegSaveKeyA" _
(ByVal hKey As Long, ByVal lpszFile As String, _
ByRef lpsa As SECURITY_ATTRIBUTES) As Long
Public Declare Function adh_apiRegSetKeySecurity _
Lib "ADVAPI32" Alias "RegSetKeySecurity" _
(ByVal hKey As Long, ByVal si As Long, _
ByRef psd() As Byte) As Long
Public Declare Function adh_apiRegSetValue _
Lib "ADVAPI32" 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 adh_apiRegSetValueEx _
Lib "ADVAPI32" 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
Public Declare Function adh_apiregUnloadKey _
Lib "ADVAPI32" Alias "RegUnloadKeyA" _
(ByVal hKey As Long, ByVal lpszSubKey As String) As Long
Public Const delete = &H10000
Public Const READ_CONTROL = &H20000
Public Const WRITE_DAC = &H40000
Public Const WRITE_OWNER = &H80000
Public Const Synchronize = &H100000
Public Const STANDARD_RIGHTS_READ = READ_CONTROL
Public Const STANDARD_RIGHTS_WRITE = READ_CONTROL
Public Const STANDARD_RIGHTS_EXECUTE = READ_CONTROL
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const SPECIFIC_RIGHTS_ALL = &HFFFF&
Public Const APPLICATION_ERROR_MASK = &H20000000
Public Const ERROR_SEVERITY_SUCCESS = &H0&
Public Const ERROR_SEVERITY_INFORMATIONAL = &H40000000
Public Const ERROR_SEVERITY_WARNING = &H80000000
Public Const ERROR_SEVERITY_ERROR = &HC0000000
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
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
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_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
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
Public Function adhSetRegistryValueFromPath _
(ByVal strPath As String, ByVal varValue As Variant) _
As Variant
' Sets a value based on a registry path
'
' From Access 97 Developer's Handbook
' by Litwin, Getz, and Gilbert. (Sybex)
' Copyright 1997. All Rights Reserved.
'
' In:
' strPath A registry path
' varValue The value to be set
' The VarType of the variant determines
' What data type in the registry is
' used
'
' Out:
' If there is an error then IsError on the return
' value will return True. Otherwise the return
' value has no meaning.
'
' Example:
' ? adhSetRegistryValueFromPath("\HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive", "1")
Dim hKey As Long
Dim strValue As String
Dim retCode As Long
If Not IsError _
(adhGetKeyAndValueFromPath(strPath, hKey, strValue)) Then
Select Case varType(varValue)
Case vbEmpty
Stop
Case vbNull
Stop
Case vbInteger
Stop
Case vbLong
retCode = adh_apiRegSetValueEx(hKey, strValue, _
0&, REG_DWORD, CLng(varValue), 4)
Select Case retCode And APPLICATION_ERROR_MASK
Case ERROR_SEVERITY_SUCCESS
Case Else
adhSetRegistryValueFromPath = CVErr(0)
End Select
Case vbSingle
Stop
Case vbDouble
Stop
Case vbCurrency
Stop
Case vbDate
Stop
Case vbString
retCode = adh_apiRegSetValueEx(hKey, strValue, _
0&, REG_SZ, ByVal CStr(varValue), Len(varValue))
Select Case retCode And APPLICATION_ERROR_MASK
Case ERROR_SEVERITY_SUCCESS
Case Else
adhSetRegistryValueFromPath = CVErr(0)
End Select
Case vbObject
Stop
Case vbError
Stop
Case vbBoolean
Stop
Case vbVariant
Stop
Case vbDataObject
Stop
Case vbByte
Stop
Case vbArray
Stop
Case Else
Stop
End Select
Call adh_apiRegCloseKey(hKey)
End If
End Function
Herefter gemmer du således:
adhSetRegistryValueFromPath "HKEY_CURRENT_USER\Software\Microsoft\FLC Nord\UserInfo", Værdi