Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 远程创建DSN ODBC连接时添加自定义登录id和密码_C#_Sql Server_Windows_Odbc_Registry - Fatal编程技术网

C# 远程创建DSN ODBC连接时添加自定义登录id和密码

C# 远程创建DSN ODBC连接时添加自定义登录id和密码,c#,sql-server,windows,odbc,registry,C#,Sql Server,Windows,Odbc,Registry,我已经编写了一段代码,可以远程创建ODBC DSN连接。我可以将注册表项添加到ODBC.INI。连接显示在ODBC数据源管理器中 我所面临的困难是,当我使用用户输入的登录ID和密码选择SQL Server身份验证时。默认情况下,它占用运行程序的用户,而我希望在运行代码时由用户决定。所有其他条目由用户输入 我应该如何实现这一目标?我尝试向注册表项添加属性,但似乎不起作用 这是我代码的一部分,基本上添加了注册表项 string reg_location = "SOFTWARE\\ODBC\\OD

我已经编写了一段代码,可以远程创建ODBC DSN连接。我可以将注册表项添加到ODBC.INI。连接显示在ODBC数据源管理器中

我所面临的困难是,当我使用用户输入的登录ID和密码选择SQL Server身份验证时。默认情况下,它占用运行程序的用户,而我希望在运行代码时由用户决定。所有其他条目由用户输入

我应该如何实现这一目标?我尝试向注册表项添加属性,但似乎不起作用

这是我代码的一部分,基本上添加了注册表项

 string reg_location = "SOFTWARE\\ODBC\\ODBC.INI";
            dsn_name = reg_location + "\\" + dsn_name;
            RegistryKey Key = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, destination_server).CreateSubKey(dsn_name);
            using (Key)
            {
                Key.SetValue("Database", database);
                Key.SetValue("Description", description);
                Key.SetValue("Driver", driver);
                Key.SetValue("Server", server);
                if (trusted_connection.ToLower().Equals("yes") || trusted_connection.ToLower().Equals("true") || trusted_connection.ToLower().Equals("sspi"))
                    Key.SetValue("Trusted_Connection", trusted_connection);
                else if (trusted_connection.ToLower().Equals("false") || trusted_connection.ToLower().Equals("no"))
                {
                    Key.SetValue("User Id", ss_username.Text);
                    Key.SetValue("Password ", ss_password.Text);
                }
                Key.SetValue("LastUser", System.Security.Principal.WindowsIdentity.GetCurrent().Name);
            }

你弄明白了吗?如果我将Trusted Connection设置为False,我可以在Excel VBA中使用任何用户/过程组合。但如果能将其保存在注册表中就好了。SQL Server身份验证和Windows身份验证之间的切换工作正常(将集成安全性添加到false),但我还没有找到用户名和密码的存储位置。