I've always used a file DSN or DSN-less code. Would user or machine DSN's be handled with a reg file directly or manually via the UI?
Long time since I have used a DSN in a connection string. I can't even remember using a User DSN but I have had to work with Machine DSNs.
Last time was for a third party program that required a DSN be specified in its settings. I had to distribute and run the reg file and it was a pain. Not so bad now since modern Group Policy can do registry updates very simply. The program converted to specifying a connection string in the meantime. I don't think DSNs are used directly very much any more because they are clunky.
The connection string contains a reference to the name of the DSN.
A File DSN can be read directly at run time.
This can be useful to change all the ODBC links on a whole network by simply editing the one file DSN. However it isn't like a target database moves around all the time so not really that useful. It could also be seen as a security vulnerability. You would certainly want to make sure it couldn't be changed by unauthorised people.
In this technique you need to build the connection string manually in Access. When a file DSN is used to link a table in Access via the Wizard, it creates a DSNless connection string by reading the information from the fileDSN which is then no longer required.
I link Access with the file DSN so the connection ends up DSNless. We did migrate our all our databases onto one SQL Server recently and I had to edit the Connect properties of all the tables in a lot of Access front ends and Excel connections. Not so hard in code but it took a while to run it against big tables. Then all the Access front ends had to be compacted.