2012-07-05 68 views
1

有什么方法可以使用jQuery(客户端)打开RDP连接窗口?使用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) {       
       } 
      }); 
     }); 

我叫首页控制器的方法,名字是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,它工作正常&它是开放的RDP基于ip地址
    窗口,因为我写在服务器端(C#)代码
    到我的系统...

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

  • 但我需要打开用户计算机(客户端)的RDP窗口...

我如何解决这个使用jQuery或JavaScript? (或)有没有其他办法可以解决这个问题?

在此先感谢.... @@@

+1

您的RDP正在打开,因为您的开发人员机器在调试时是服务器,但是当您将其部署到服务器时,它会在服务器上打开RDP,而不是触发它的用户。 – Rumplin 2012-07-05 09:59:16

回答

4

我跟着以下给出解决该问题的步骤,

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 &页写在下面给出服务器端(C#)代码GET方法(页面加载)为解决这一问题

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

所以,这是针对此问题的一种解决方案...

1

我如何解决这个使用jQuery或JavaScript?

等一下,您正在服务器上打开一个进程,而不是在客户端计算机上。这就是为什么你的应用程序不起作用。出于安全原因,您无法在客户端计算机上启动进程。仅通过javascript实现此任务可能会非常困难。像LogMeIn这样的公司已经实现了这样的接口,但是后面有很多年的工作,而不是你可能希望通过几行代码来实现某些人会在Stack Overflow上发布的代码:-)

一些可能性包括using an ActiveX这显然强加了你可以控制你的客户环境。另一种可能性是使用Full Trust中运行的Silverlight 5 Out-Of-Browser应用程序,它允许您在客户端启动进程,但显然与第一种解决方案具有相同的限制,这就是ActiveX现在已经过时了。

+0

您好@Darin Dimitrov ..感谢您的回复......您的意思是我们无法在客户端计算机上执行此操作?有没有其他方法可以解决这个问题? – 2012-07-05 09:54:22

+0

根据您的环境,可能有一些解决方案。例如,如果您可以完全控制客户端计算机,并且它们使用IE,则可以编写一个在客户端启动进程的ActiveX控件。但是,由于ActiveX现在被认为是过时的技术,因此您可能还会考虑使用完全信任运行的浏览器外Silverlight 5应用程序,这将允许您在客户端计算机上启动一个进程。你可以忘记纯粹的JavaScript。出于绝对明显的安全原因,客户端上的启动过程是不可能的。 – 2012-07-05 09:58:41