如何将RUNAS / NETONLY功能构建到(C#/。NET / WinForms)程序中?

问题描述 投票:21回答:6

我们的工作站不是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_ONLYCreateProcessWithLogonW

我们的工作站不是SQL Server所在域的成员。 (他们实际上根本不在域上-不要问)。当我们使用SSMS或其他任何东西连接到SQL Server时,我们使用RUNAS / ...

.net sql-server security authentication runas
6个回答
11
投票

我知道这是一个旧线程,但是它非常有用。我想要的是/ netonly样式功能,因此与Cade Roux的情况完全相同。

约翰·拉施(John Rasch)的答案做了一个小修改!!


6
投票
我只是使用ImpersonationContext做了类似的事情。使用起来非常直观,对我来说效果很好。

3
投票
我收集了这些有用的链接:

2
投票
此代码是RunAs类的一部分,我们用于启动具有提升特权的外部进程。为用户名和密码传递null将提示标准UAC警告。当传递用户名和密码的值时,您实际上可以启动未提升UAC提示的应用程序。

0
投票
我想您不能只是将应用程序的用户添加到sql服务器,然后使用sql身份验证而不是Windows身份验证?

0
投票
在这里使用非常有用的答案,我创建了下面的简化的类,该类使用.NET Standard中也提供的API:
© www.soinside.com 2019 - 2024. All rights reserved.