8

我正在尝试从我的网页打开到服务器的 rdp 会话。

<td><a href="file:///c:/Users/stegar06/Desktop/wtf.bat">testrdp</a></td>

.bat 文件只写了以下行:mstsc /v:emea-cirrus

发生的情况是该文件只是作为文本文件显示在我的 chrome 浏览器中。所以网页只是加载并在顶部字面上说“mstsc /v:emea-cirrus”。我怎样才能让它启动远程桌面客户端并转到该地址?

我也尝试过制作一个 .rdp 文件并引用 href,它也只是显示为纯文本。RDP 文件是使用以下代码创建的:

screen mode id:i:2
desktopwidth:i:1436
desktopheight:i:925
session bpp:i:16
auto connect:i:1
full address:s:emea-orion
compression:i:1
keyboardhook:i:2
audiomode:i:2
redirectdrives:i:0
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:0
displayconnectionbar:i:1
alternate shell:s:
shell working directory:s:
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:1
bitmapcachepersistenable:i:1
winposstr:s:0,3,0,0,800,600
redirectclipboard:i:1
redirectposdevices:i:0
drivestoredirect:s:
autoreconnection enabled:i:1
authentication level:i:0
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
allow desktop composition:i:0
allow font smoothing:i:0
disable cursor setting:i:0
gatewayhostname:s:
gatewayusagemethod:i:0
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
4

3 回答 3

14

您可以在服务器端创建 .RDP 文件,Windows 应将其与远程桌面关联,并强制浏览器下载它(而不是显示它)。在 PHP 中,你会这样做:

$file = 'screen mode id:i:2
desktopwidth:i:1436
desktopheight:i:925
session bpp:i:16
auto connect:i:1
full address:s:emea-orion
compression:i:1
keyboardhook:i:2
audiomode:i:2
redirectdrives:i:0
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:0
displayconnectionbar:i:1
alternate shell:s:
shell working directory:s:
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:1
bitmapcachepersistenable:i:1
winposstr:s:0,3,0,0,800,600
redirectclipboard:i:1
redirectposdevices:i:0
drivestoredirect:s:
autoreconnection enabled:i:1
authentication level:i:0
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
allow desktop composition:i:0
allow font smoothing:i:0
disable cursor setting:i:0
gatewayhostname:s:
gatewayusagemethod:i:0
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0';

header("Content-Disposition: attachment; filename=filename.rdp");
header("Content-Type: application/rdp");
print $file;
exit();

我以前使用过这种技术并且效果很好。用户将单击该链接,系统会提示保存或打开,如果他们单击打开,远程桌面将使用指定的设置启动。


.NET 的示例,特别是 ASP.MVC

public FileResult RDP() {
    MemoryStream memoryStream = new MemoryStream();
    TextWriter tw = new StreamWriter(memoryStream);
    tw.WriteLine("screen mode id:i:2");
    tw.WriteLine("use multimon:i:0");
    ///The rest of the file
    memoryStream.Position = 0;
    return File(memoryStream, "application/rdp", "conenction.rdp");
}
于 2013-04-17T15:48:53.967 回答
2

我可以建议使用基于浏览器的 RDP 客户端吗?现在你有开源选择,如果你有 Linux 服务器,可以从Guacamole FreeRDP-WebConnect 或Windows 的Myrtille中选择。还有商业软件,具有更多功能(取决于您的需要),例如 2X RDP 客户端或 LogMeIn。

于 2016-04-11T15:15:20.840 回答
1

出于安全原因,您不能简单地通过任何现代浏览器的链接运行批处理文件。

如果您将对批处理文件的调用包装在 VBScript 中并通过 shell 运行它,则可以使其正常工作。但是,您需要打开 ActiveX 权限才能让 IE 允许这样做。

有关如何执行此操作的示例,请参见此处

于 2013-04-17T15:40:45.487 回答