CheckOLEDBProvider - Check whether an OLEDB provider is registered correctly
'Check if the specified OLEDB Provider is installed and registered correctly
'
'Example: check the Jet 4.0 OLEDB Provider
'MsgBox "The specified OLEDB provider " & ' IIf(CheckOLEDBProvider
' ("Microsoft.Jet.OLEDB.4.0"), "does", "does not") & " exist"
'
' NOTES: Requires CheckRegistryKey and GetRegistryValue
Function CheckOLEDBProvider(ByVal ProgID As String) As Boolean
Dim CLSID As String
Dim InprocServer As String
Const HKEY_CLASSES_ROOT = &H80000000
On Error Resume Next
'if the ProgID for the OLEDB does not exist, return false
If Not CheckRegistryKey(HKEY_CLASSES_ROOT, ProgID) Then Exit Function
'get the clsid
CLSID = GetRegistryValue(HKEY_CLASSES_ROOT, ProgID & "\CLSID", "")
'check if there is the key "OLE DB Provider" under the CLSID key
If Not CheckRegistryKey(HKEY_CLASSES_ROOT, _
"CLSID\" & CLSID & "\OLE DB Provider") Then Exit Function
'check if the physical file exists
InprocServer = GetRegistryValue(HKEY_CLASSES_ROOT, _
"CLSID\" & CLSID & "\InprocServer32", "")
If (GetAttr(InprocServer) And vbDirectory) = 0 Then
'if the routine arrives here, return True
CheckOLEDBProvider = True
End If
End Function