我们的工作站不是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?messageid=32443204&threadid=32442982
我想我将不得不使用LOGON_NETCREDENTIALS_ONLY
和CreateProcessWithLogonW
我们的工作站不是SQL Server所在域的成员。 (他们实际上根本不在域上-不要问)。当我们使用SSMS或其他任何东西连接到SQL Server时,我们使用RUNAS / ...
我知道这是一个旧线程,但是它非常有用。我想要的是/ netonly样式功能,因此与Cade Roux的情况完全相同。
约翰·拉施(John Rasch)的答案做了一个小修改!!
ImpersonationContext
做了类似的事情。使用起来非常直观,对我来说效果很好。