C# 操作ODBC数据源
新建
LocalMachine对应系统
CurrentUser对应使用者
string strText= File.ReadAllText(@"C:\Windows\Eado.ini"); Microsoft.Win32.Registry.CurrentUser.OpenSubKey("software").OpenSubKey("ODBC"). OpenSubKey("ODBC.INI", true).DeleteSubKey(DsnName.Trim()); //在HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI中创建一个子键和相应的值 Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("software"). OpenSubKey("ODBC").OpenSubKey("ODBC.INI", true).CreateSubKey(DsnName.Trim()); regkey.SetValue("DataBase", "efoxsfcmu3seagate"); regkey.SetValue("Driver", @"C:\WINDOWS\System32\SQLSRV32.dll"); regkey.SetValue("Server", ServerName.Trim()); regkey.SetValue("LastUser", "essnlxddl"); regkey.SetValue("Trusted_Connection", "No");//如果是账密登录, //在HKEY_LOCAL_MACHINE/Software/ODBC/ODBC.INI/ODBC Data Sources中增加一个字符串键值 regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("software").OpenSubKey("ODBC") .OpenSubKey("ODBC.INI", true).OpenSubKey("ODBC Data Sources", true); regkey.SetValue(DsnName.Trim(), "SQL Server"); return true;
localMachine
直接操作注册表,需要引用Microsoft.Win32命名空间
/// <summary>/// 创建SQL数据源 /// </summary> /// <param name="dns">数据源名称</param> /// <param name="server">服务器</param> /// <param name="database">数据库</param> /// <returns></returns> private bool CreateSqlODBC(string dsn, string server,string database) { try { RegistryKey regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ODBC").OpenSubKey("ODBC.INI", true).CreateSubKey(dsn); regKey.SetValue("Driver", @"C:\WINDOWS\system32\SQLSRV32.dll"); regKey.SetValue("Server", server); regKey.SetValue("Database", database); regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ODBC").OpenSubKey("ODBC.INI", true).OpenSubKey("ODBC Data Sources", true); regKey.SetValue(dns, "SQL Server"); return true; } catch { return false; } }
方法2:使用P/Invoke(平台调用),需要引用System.Runtime.InteropServices命名空间,具体的函数参数MSDN有比较详细的解释
[DllImport("ODBCCP32.DLL")] public static extern int SQLConfigDataSource(IntPtr hwndParent, int fRequest, string lpszDriver, string lpszAttributes); private int CreateSqlODBC(string dsn, string description, string server, string database) { string lpszAttributes = string.Empty; lpszAttributes += string.Format("DSN={0}\0",dsn); lpszAttributes += string.Format("DESCRIPTION={0}\0", description); lpszAttributes += string.Format("SERVER={0}\0", server); lpszAttributes += string.Format("DATABASE={0}\0", database); return SQLConfigDataSource((IntPtr)0, 4, "SQL Server", lpszAttributes); }