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
.
中启动应用程序
问题是它是付费软件。
编辑
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
.
问题是它是付费软件。