1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
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, ByRef phkResult 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, ByRef lpType As Long, ByRef lpData As Any, ByRef lpcbData As Long) As Long
Private Const KEY_QUERY_VALUE As Long = &H1
Private Const STANDARD_RIGHTS_READ = &H20000
Private Const KEY_ENUMERATE_SUB_KEYS = &H8&
Private Const KEY_NOTIFY = &H10&
Private Const SYNCHRONIZE = &H100000
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const HKEY_CURRENT_USER = &H80000001
Private Const REG_SZ = 1
Private Const REG_DWORD = 4
Function RegKeyValue(ByVal veRootKey As Long, ByRef vsKeyName As String, ByRef vsValueName As String, ByVal Handle_Bits As String) As Variant
'*************************************************************************************************
'*Usage = Regkeyvalue (&H80000002, "SOFTWARE\GPL Ghostscript\9.06\", "GS_DLL", "32") *
'*************************************************************************************************
Dim hKey As Long
Dim sBuffer As String
Dim nBuffer As Long
Dim nLength As Long
Dim eValueType As Long
Dim Wow As Long
Const KEY_WOW64_64KEY = &H100
Const KEY_WOW64_32KEY = &H200
Const KEY_READ = &H20019
If Handle_Bits = "64" Then
Wow = KEY_WOW64_64KEY
Else
Wow = KEY_WOW64_32KEY
End If
If 0 = RegOpenKeyEx(veRootKey, vsKeyName, 0&, Wow + KEY_READ, hKey) Then
RegQueryValueEx hKey, vsValueName, 0, eValueType, ByVal 0&, nLength
Select Case eValueType
Case REG_SZ
sBuffer = Space$(nLength)
RegQueryValueEx hKey, vsValueName, 0, eValueType, ByVal sBuffer, nLength
RegKeyValue = Left$(sBuffer, nLength - 1)
Case REG_DWORD
RegQueryValueEx hKey, vsValueName, 0, eValueType, nBuffer, 4
RegKeyValue = nBuffer
End Select
RegCloseKey hKey
End If
End Function |
Partager