<p>Is there any way to create a ODBC DSN with C#?</p>

<p>Maybe a P/invoke?</p>

Following resources might be helpful:
MSDN:
How To Use the ODBC .NET Managed Provider in Visual C# .NET and Connection Strings
CodeProject.com
An ODBC (DSN/Driver) Manager DLL written in C#
You can try to invoke functions:
SQLWriteDSNToIni and ConfigDSN (MSDN links are dead for some reason, try to google by functions names)