C# 使用jquery打开RDP连接窗口-客户端

C# 使用jquery打开RDP连接窗口-客户端,c#,javascript,jquery,asp.net-mvc,C#,Javascript,Jquery,Asp.net Mvc,有没有办法使用jquery(客户端)打开RDP连接窗口 我的jquery代码如下所示 $(function () { $(".RDPLink1").live('click', function () { var IPAddress = $(this).attr('id'); // ip or name of computer to connect $.ajax({ type: 'post',

有没有办法使用jquery(客户端)打开RDP连接窗口

我的jquery代码如下所示

$(function () {
        $(".RDPLink1").live('click', function () {
            var IPAddress = $(this).attr('id');  // ip or name of computer to connect

            $.ajax({
                type: 'post',
                cache: false,
                data: { strIPAddress: IPAddress },
                url: '<%=Url.Action("OpenRDPWindow","Home") %>',
                success: function (data) {                        
                }
            });
        });
  • 实际上,我的需要是,当用户在我的页面中单击href链接时,我们 需要打开基于IPAddress的RDP窗口

  • 在我使用VS2010的系统中,它工作正常&它打开了RDP
    基于IPAddress的窗口,因为我在服务器端(C#)编写了代码
    到我的系统

  • 在IIS中部署项目后,用户单击href链接 RDP(mstsc.exe)正在服务器计算机(我在其中部署我的
    应用程序)

  • 但是我需要在用户机器(客户端)中打开RDP窗口

如何使用jquery或javascript解决这个问题?(或者)有没有其他办法解决这个问题

提前谢谢@@@

如何使用jquery或javascript解决这个问题

请稍候,您正在服务器上打开进程,而不是在客户端计算机上。这就是为什么你的应用程序不能工作。出于安全原因,您无法在客户端计算机上启动进程。仅通过javascript实现这一任务可能是相当具有挑战性的。像这样的公司已经实现了这样的接口,但是还有很多年的工作要做,而不是希望通过几行代码就可以实现,有人会在堆栈溢出上发布这些代码:-)


一些可能性包括,显然,您可以控制您的客户环境。另一种可能是使用完全信任运行的Silverlight 5浏览器外应用程序,它允许您在客户端上启动进程,但它显然与第一种解决方案具有相同的限制,只是ActiveX现在有点过时了。

我按照下面给出的步骤来解决此问题

1) Jquery代码是

$(function () {
    $(".RDPLink1").live('click', function () {
        var IPAddress = $(this).attr('id');  // ip or name of computer to connect
        window.location.href="http://path/home/OpenRDP?address="+IPAddress ;            
    });
});
2) 我创建了一个新的.aspx页面,并在GET方法(页面加载)中写入服务器端(C#)代码,以解决此问题

[HttpGet]
public ActionResult OpenRDP()
{
        string address = Request.QueryString["address"];
        Response.ContentType = "application/octet-stream";
        Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}.rdp", address));
        Response.Output.Write(string.Format(@"
screen mode id:i:2
session bpp:i:32
compression:i:1
keyboardhook:i:2
displayconnectionbar:i:1
disable wallpaper:i:1
disable full window drag:i:1
allow desktop composition:i:0
allow font smoothing:i:0
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:{0}
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:1
redirectposdevices:i:0
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:1
drivestoredirect:s:E:;
use multimon:i:0
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:2
redirectdirectx:i:1
use redirection server name:i:0", address));

        Response.End();
        return View();
}
它将从客户端的浏览器下载选项打开RDP窗口


因此,这是解决这个问题的一种方法……

Hi@Darin Dimitrov。。谢谢你的回复。。。你的意思是我们不能在客户机上做这件事?有没有其他方法可以解决这个问题?根据您的环境,可能会有一些解决方案。例如,如果您完全控制客户机,并且客户机使用IE,则可以编写ActiveX控件,在客户机上启动进程。但是既然ActiveX现在被认为是过时的技术,你也可以考虑一个完全信任的浏览器外Silverlight 5应用程序,它允许你在客户端计算机上启动一个进程。您可以忘记纯javascript。出于绝对明显的安全原因,在客户端上启动进程是不可能的。您的RDP正在打开,因为在调试时,您的开发人员计算机是服务器,但当您将其部署到服务器时,它会在服务器上打开RDP,而不是向触发它的用户打开。
[HttpGet]
public ActionResult OpenRDP()
{
        string address = Request.QueryString["address"];
        Response.ContentType = "application/octet-stream";
        Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}.rdp", address));
        Response.Output.Write(string.Format(@"
screen mode id:i:2
session bpp:i:32
compression:i:1
keyboardhook:i:2
displayconnectionbar:i:1
disable wallpaper:i:1
disable full window drag:i:1
allow desktop composition:i:0
allow font smoothing:i:0
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:{0}
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:1
redirectposdevices:i:0
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:1
drivestoredirect:s:E:;
use multimon:i:0
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:2
redirectdirectx:i:1
use redirection server name:i:0", address));

        Response.End();
        return View();
}