如何使用c#代码创建ODBC DSN 64位

时间:2016-01-08 08:22:20

标签: c#

我使用下面的代码创建ODBC DSN。它成功运行了ODBC DSN 32bit。但是,我需要创建ODBC DSN 64位。你知道下面的代码有什么变化可以实现吗?

谢谢,

//////////////
using Microsoft.Win32;
//////////////

string ODBC_PATH = "SOFTWARE\\ODBC\\ODBC.INI\\";
string driverName = "SQL Server Native Client 11.0";
string dsnName = "DSNfromCode";
string database = "MYDBNAME";
string description = "This DSN was created from code!";
string server = ".";
bool trustedConnection = true;

// Lookup driver path from driver name         
string driverPath = "C:\\WINDOWS\\System32\\sqlncli11.dll";

var datasourcesKey = Registry.LocalMachine.CreateSubKey(ODBC_PATH + "ODBC Data Sources");
if (datasourcesKey == null)
{
    throw new Exception("ODBC Registry key does not exist");
}
datasourcesKey.SetValue(dsnName, driverName);
// Create new key in odbc.ini with dsn name and add values        
var dsnKey = Registry.LocalMachine.CreateSubKey(ODBC_PATH + dsnName);
if (dsnKey == null)
{
    throw new Exception("ODBC Registry key for DSN was not created");
}

dsnKey.SetValue("Database", database);
dsnKey.SetValue("Description", description);
dsnKey.SetValue("Driver", driverPath);
dsnKey.SetValue("LastUser", "sa");
dsnKey.SetValue("Server", server);
dsnKey.SetValue("Database", database);
dsnKey.SetValue("username", "sa");
dsnKey.SetValue("password", "system123#");
dsnKey.SetValue("Trusted_Connection", trustedConnection ? "Yes" : "No");

1 个答案:

答案 0 :(得分:0)

基于https://support.microsoft.com/en-us/kb/942976我有一种直觉,即64位的系统DSN将放在同一个注册表文件夹中。所以基于这个假设你只需要为64bit情况修改你的driverPath变量。

另一个要求是使用64位ODBC管理员工具在x64计算机上创建DSN。在注册表中找到DSN,检查其中的内容并在C#中实现相同的内容。

对未来的一些建议......请查看您发布的代码。特别是当它使用sa用户密码时:)