我使用下面的代码来创建ODBC DSN。它运行成功并创建了ODBC DSN 32位。但是,我需要创建64位的ODBC DSN。你知道在下面的代码中有什么改变来实现它吗?
谢谢,
//////////////
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");发布于 2016-01-08 17:43:46
基于https://support.microsoft.com/en-us/kb/942976,我有一种直觉,64位的系统DSN将被放在相同的注册表文件夹中。所以基于这个假设,你只需要修改你的driverPath变量来适应64位的情况。
另一种方法是使用64位ODBC Administrator工具在x64计算机上创建DSN。在注册表中查找DSN,检查其中的内容,并在C#中实现相同的设置。
对未来的一些建议。请检查您发布的代码。尤其是在输入sa user password :)
https://stackoverflow.com/questions/34672433
复制相似问题