Тема получения списка DSN для ODBC-драйверов неоднократно обсуждалась в Инете.
И есть примеры кодов, основанные на циклах с использованием API-функции
SQLDataSources
Но указанные примеры решают лишь половину задачи - дают взглянуть на список DSN. 2 важная половина задачи - путем выбора из этого списка программная установка соединения с выбранным dsn не решается - для этого надо знать нечто большее, чем просто имя DSN и тип драйвера, а параметры DSN - login, password, имя БД в данном DSN,возможно кой-чего еще.
Как это реализовать с помощью того же API и ODBC?
Очень часто при установке приложения на компе, приложение, основанное на ODBC-коннекте его не находит - то ли переименовали, то ли удалили - особенно для присоединенных таблиц Access, кот до сих пор работают только через ODBC несмотря на наличие ADO и ADO NET