C# 通过远程桌面(或其他)在本地将 WinForm App 运行 连接到数据库

C# connect WinForm App running locally via Remote Desktop (or other) to a Database

编辑

RDP 只是我目前使用的方法,如果有另一种方法可以在不同的环境中连接到数据库,我会这样做。理想情况下,我希望它连接到数据库,就像可执行文件在 RDP 环境中一样,并且没有显示通过其他环境连接到数据库的迹象。

编辑 2

我还尝试添加第二个连接字符串并打开它,然后立即打开我的当前连接字符串,但没有用。


我有一个连接到数据库的 C# Win Forms 应用程序,它工作正常,除非我需要将 RDP 连接到正确的环境并从那里获得可执行文件 运行。

是否可以在应用程序内部进行 RDP 连接,然后连接到数据库,而无需在 RDP 内部安装可执行文件。

我尝试使用我发现的 MSTSCLib 库建立一个连接字符串 here 但是无论如何这在代码级别都不起作用。

代码:

    private void rdpConnect_Click(object sender, EventArgs e)
    {
        MSTerminalServiceControl1.Server = rdpServer.Text;
        MSTerminalServiceControl1.UserName = rdpUserName.Text;
        IMsTscNonScriptable secured = (IMsTscNonScriptable)MSTerminalServiceControl1.GetOcx();
        secured.ClearTextPassword = rdpPassword.Text;
        MSTerminalServiceControl1.Connect();
    }

    private void rdpDisconnect_Click(object sender, EventArgs e)
    {
        MSTerminalServiceControl1.Disconnect();
    }

当前路径:

所需路径:

您似乎没有对 ActiveX 控件的引用。

在您的工具箱中选择 COM 组件:Microsoft RDP 控件 - 版本 x

这里的版本很重要,它应该与安装的 RDP 版本相匹配,一旦你将它添加到你的工具箱中,将它拖放到你的表单中,如果版本不匹配,它会抛出错误。我会说从最新版本的控件开始,直到您能够成功地将它添加到您的表单中。您代码中的 MSTerminalServiceControl1 实际上是您应该放在表单上的此控件的名称。

我敢肯定,那行不通,因为...

RDP(远程桌面协议)是一种将您从远程计算机连接到终端服务器上的会话的协议。这就是目的。在该会话中,您可以启动程序、打开文档并完成您的工作。就像你坐在那台机器前一样。好处是,这可以由多个用户完成,仅取决于用户许可证的数量和硬件功率。

有一些特殊情况,例如您可以在启动时自动启动程序。那么您的会话仅限于此程序,并且会在程序结束时结束。但这只是一种限制。您仍将为此开始会话。

此外,每个 windows 版本中都有一个小版本的终端服务器,不仅是服务器。这可以以相同的方式用于远程连接。

很遗憾,RDP 无法连接到数据库。绝不。你需要一个程序。您可以构建一个带有 RDP-Client 的本地程序。这可以连接到远程机器上的会话并启动另一个连接到数据库的程序。但是默认情况下,to程序之间是没有通信的,所以没有任何好处。

我觉得,和别人说的一样,直接连接数据库最好。

您需要的是将多个 sql 用户连接到一个数据库,而不是使用 RDP。

您应该为每个用户编写一个特殊的连接字符串,如下所示:

using System.Data.SqlClient;

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
    "Data Source=ServerName;" +
    "Initial Catalog=DataBaseName;" +
    "User id=" + UserName + ";"
    "Password=" + Password + ";";
 conn.Open();

将其放入接受用户名和密码的 class 中。

完整示例:

class myConnection
{
    public static SqlConnection GetConnection(string UserName, string Password)
    {
        string str = "Data Source=ServerName;Initial Catalog=DataBaseName;User id=" +             
        UserName + ";Password=" + Password + ";";
        SQlConnection con = new SqlConnection(str);
        con.Open();
        return con;
    }
}

然后将每个用户直接连接到数据库。

如果您有可执行文件的 app.config 文件,更新连接字符串参数以指向 rdp 服务器的 ip。 在执行此操作之前,请在防火墙上启用数据库端口并启用与数据库的远程连接。 对于 mssql 服务器。 运行 sql 服务器配置管理器。 Select 数据库实例。 在网络配置下启用 tcp/ip。 在 io 地址选项卡下。 将 TCP 端口设置为 1443。 重启实例。

数据源=IP,1443\dbservername; 我希望这可以作为一个起点。

我看到网络管理员将我们的普通 winform 应用程序配置为使用 Citrix 通过 the Internet 远程打开。 我们对可执行文件进行了未更改。 它将在 Citrix Virtual Server.

中启动应用程序

问题是它是付费软件。