我们的工作站不是我们的SQL Server所在域的成员.(他们实际上根本不在某个领域 - 不要问).
当我们使用SSMS或任何东西连接到SQL Server时,我们将RUNAS/NETONLY与DOMAIN\user一起使用.然后我们输入密码并启动程序.(RUNAS/NETONLY不允许您在批处理文件中包含密码).
所以我有一个需要SQL连接的.NET WinForms应用程序,用户必须通过运行具有RUNAS/NETONLY命令行的批处理文件启动它,然后启动EXE.
如果用户意外直接启动EXE,则无法连接到SQL Server.
右键单击应用程序并使用"运行方式..."选项不起作用(可能是因为工作站并不真正了解域).
我正在寻找一种方法让应用程序在内部启动之前执行RUNAS/NETONLY功能.
有关RUNAS/NETONLY如何工作的说明,请参阅此链接:http://www.eggheadcafe.com/conversation.aspx?smessidid = 32443204&threadid = 32442982
我想我将不得不使用LOGON_NETCREDENTIALS_ONLY与CreateProcessWithLogonW
几天前我问了一个问题(使用Windows身份验证从非域计算机访问SQL Server 2005),这提出了一些有趣但不可用的建议.我想再次提出这个问题,但要弄清楚我的约束是什么:
我有一个Windows域,其中一台机器运行SQL Server 2005,并配置为仅支持Windows身份验证.我想在同一网络上的计算机上运行C#客户端应用程序,但不在域上,并访问SQL Server 2005实例上的数据库.
我不能在任何一台机器上创建或修改操作系统或SQL Server用户,我也不能对权限或模拟进行任何更改,我也不能使用runas.
我知道我可以使用以下四个参数编写可以连接到SQL Server数据库的Perl和Java应用程序:服务器名称,数据库名称,用户名(域名为domain\user)和密码.
在C#中,我尝试过各种各样的事情:
string connectionString = "Data Source=server;Initial Catalog=database;User Id=domain\user;Password=password";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
Run Code Online (Sandbox Code Playgroud)
并尝试将集成安全性设置为真假,但似乎没有任何效果.我想在C#中做什么根本不可能?
感谢任何帮助,马丁