2

有没有办法使用 jquery(client side) 打开 RDP Connection 窗口?

我的 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) {                        
                }
            });
        });

我调用Home控制器方法,名称是OpenRDPWindow,比如

    public void OpenRDPWindow(string strIPAddress)
    {            
        Process objProcess = new Process();
        string exe = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\mstsc.exe");
        if (exe != null)
        {               
            objProcess.StartInfo.FileName = exe;
            objProcess.StartInfo.Arguments = "/v " + strIPAddress;   // ip or name of computer to connect
            objProcess.Start();
        }            
    }
  • 其实我的需要是,当用户点击我页面中的href链接时,我们需要打开基于IPAddress的RDP窗口......

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

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

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

我如何使用 jquery 或 javascript 解决这个问题?(或)有没有其他方法可以解决这个问题?

提前致谢....@@@

4

2 回答 2

5

我按照下面给出的步骤来解决这个问题,

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 窗口......

所以,这是解决这个问题的一种类型......

于 2012-07-26T12:40:51.623 回答
1

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

等一下,您是在服务器上打开一个进程,而不是在客户端计算机上。这就是为什么您的应用程序不起作用的原因。出于安全原因,您不能在客户端计算机上启动进程。仅通过 javascript 完成此任务可能非常具有挑战性。诸如此类的公司LogMeIn已经实现了这样的接口,但是背后有多年的工作,而不是您希望通过几行代码实现的东西,有人会在 Stack Overflow 上发布您:-)

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

于 2012-07-05T09:46:54.243 回答