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 53 54 55 56 57 58 59 60 61 62 63
| Option Compare Database
Option Explicit
' Début de déclarations
Private Const HKCU = &H80000001 ' HKEY_CURRENT_USER (( HKEY ) 0x80000001 )
Private Const HKLM = &H80000002 ' HKEY_LOCAL_MACHINE(( HKEY ) 0x80000002 )
Private Const KEY_QUERY_VALUE As Long = &H1
Private Declare Function RegOpenKeyEx Lib "Advapi32.dll" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal sbKey As String, ByVal Options As Long, _
ByVal Security As Long, ByRef newHKey As Long) As Long
Private Declare Function RegEnumValue Lib "Advapi32.dll" Alias "RegEnumValueA" _
(ByVal hKey As Long, ByVal dwIndex As Long, _
ByVal lpValueName As String, ByRef lpcValueName As Long, _
ByVal lpReserved As Long, ByRef lpType As Long, _
ByVal lpData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "Advapi32.dll" _
(ByVal hKey As Long) As Long
Public Enum dsnTypes
dsnUser = 0
dsnSystem = 1
End Enum
' Fin des déclarations
Public Function VerifierDSN(strDSN, Optional dsnType As dsnTypes = dsnTypes.dsnuser) As String
Dim hKey As Long, lngRootKey As Long, strKey As String
Dim lngKeyType As Long, strDSNentry As String, strDrvEntry As String
Dim strValName As String, lngSzValName As Long
Dim strValData As String, lngSzValData As Long
Dim lngRetVal As Long, idx As Long
Select Case dsnType
Case dsnuser
lngRootKey = HKCU
Case dsnSystem
lngRootKey = HKLM
End Select
VerifierDSN = ""
strKey = "Software\ODBC\ODBC.INI\ODBC Data Sources" & vbNullChar
lngRetVal = RegOpenKeyEx(lngRootKey, strKey, _
0, KEY_QUERY_VALUE, hKey)
idx = 0
Do While lngRetVal = 0
lngSzValName = 256: strValName = String(257, vbNullChar)
lngSzValData = 256: strValData = String(257, vbNullChar)
lngRetVal = RegEnumValue(hKey, idx, strValName, lngSzValName, 0, _
lngKeyType, strValData, lngSzValData)
If Not lngRetVal Then
strDSNentry = Left(strValName, lngSzValName)
strDrvEntry = Left(strValData, lngSzValData)
If LCase(strDSN) = LCase(strDSNentry) Then VerifierDSN = strDrvEntry: Exit Do
End If
idx = idx + 1
Loop
lngRetVal = RegCloseKey(hKey)
End Function |
Partager