>#DEFINE HKEY_LOCAL_MACHINE 0x80000002 >#DEFINE ODBC_DRIVERS "SOFTWARE\ODBC\ODBCINST.INI" > >SET CLASSLIB TO (HOME(1) + "FFC\registry") ADDITIVE > >LOCAL Reg AS registry > >m.Reg = CREATEOBJECT("registry") > >LOCAL ARRAY Entries(1) > >m.Reg.openkey(ODBC_DRIVERS,HKEY_LOCAL_MACHINE,.F.) >m.Reg.enumkeys(@m.Entries) >m.Reg.closekey() > >LOCAL Driver AS String >LOCAL kValue AS String >LOCAL Drivers AS Integer > >LOCAL ARRAY InstalledDrivers(1, 4) > >m.Drivers = 0 > >FOR EACH m.Driver IN m.Entries > > m.Reg.openkey(ODBC_DRIVERS + "\" + m.Driver,HKEY_LOCAL_MACHINE, .F.) > > IF m.Reg.getkeyvalue("Driver", @m.kValue) = 0 > > m.Drivers = m.Drivers + 1 > DIMENSION m.InstalledDrivers(m.Drivers, 4) > > m.InstalledDrivers(m.Drivers, 1) = m.Driver > > IF m.Reg.getkeyvalue("DriverODBCVer", @m.kValue) = 0 > m.InstalledDrivers(m.Drivers, 2) = m.kValue > ELSE > m.InstalledDrivers(m.Drivers, 2) = "" > ENDIF > > IF m.Reg.getkeyvalue("Driver", @m.kValue) = 0 > IF "%" $ m.kValue > m.kValue = STRTRAN(m.kValue, STREXTRACT(m.kValue, "%", "%", 1, 4), GETENV(STREXTRACT(m.kValue, "%", "%"))) > ENDIF > m.InstalledDrivers(m.Drivers, 3) = m.kValue > m.InstalledDrivers(m.Drivers, 4) = FDATE(m.kValue) > ELSE > m.InstalledDrivers(m.Drivers, 3) = "" > m.InstalledDrivers(m.Drivers, 4) = {} > ENDIF > > ENDIF > > m.Reg.closekey() >ENDFOR > >* For displaying purposes... > >CLEAR > >FOR m.Drivers = 1 TO ALEN(m.InstalledDrivers, 1) > ? m.InstalledDrivers(m.Drivers, 1), ; > "/ Version:", m.InstalledDrivers(m.Drivers, 2), ; > "/ File:", m.InstalledDrivers(m.Drivers, 3), ; > "/ Date:", m.InstalledDrivers(m.Drivers, 4) >ENDFOR >>