Если вы хотите избежать обработки версий в каждом конкретном случае, вы можете перебирать значения ключей, например ..
Эта функция предназначена для перечисления через regkeys для драйверов ODBC и просто проверки наличия mysql где-нибудь, если нет, то она предупредит пользователя, затем переместит его на страницу загрузки и напомнит, чтобы получить правильную версию для своего архитектура (32/64)
Public Function CheckMySQL()
Dim arrEntryNames()
Dim arrValueTypes()
Dim rPath As String
rPath = "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"
Call EnumerateRegEntries(rPath, arrEntryNames, arrValueTypes)
If Not IsEmpty(arrEntryNames) Then
For Each strAsk In arrEntryNames
If (InStr(strAsk, "MySQL")) Then
strFound = strFound & strAsk & ", "
End If
Next
End If
If (Len(strFound) = 0) Then
#If Win64 Then
MsgBox "You need MySQL Driver *64 bit* - Press OK to get it!"
#Else
MsgBox "You need MySQL Driver *32 bit* - Press OK to get it!"
#End If
ActiveWorkbook.FollowHyperlink Address:="http://goo.gl/vbm6g", NewWindow:=True
CheckMySQL = False
Else
CheckMySQL = True
End If
End Function
И это вам понадобится для перечисления ключей reg (подробнее об этом см. http://technet.microsoft.com/en-us/library/ee176771.aspx):
Public Sub EnumerateRegEntries(strKeyPath, arrEntryNames, arrValueTypes)
Const HKEY_CLASSES_ROOT = &H80000000&
Const HKEY_CURRENT_USER = &H80000001&
Const HKEY_LOCAL_MACHINE = &H80000002&
Const HKEY_USERS = &H80000003&
Const HKEY_CURRENT_CONFIG = &H80000005&
Dim objReg As Object
Dim strComputer As String
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrEntryNames, arrValueTypes
End Sub