Как RDP с веб-страницы

Я пытаюсь открыть сеанс rdp на сервере с моей веб-страницы.

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

The .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

3 ответов


по соображениям безопасности, вы не можете просто запустить пакетный файл по ссылке в любом современном браузере.

вы можете заставить это работать, если вы обернете вызов пакетного файла в VBScript и запустите его через оболочку. Однако вам нужно будет открыть разрешения ActiveX, чтобы IE разрешил это.

пример как это сделать, см. здесь.


Вы можете создать .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 в особое АСП.В 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");
        }

могу ли я предложить использовать клиент RDP на основе браузера? У вас есть выбор с открытым исходным кодом в настоящее время, от гуакамоле FreeRDP-WebConnect, если у вас есть серверы Linux или черники для Windows. Есть также коммерческое программное обеспечение с большим количеством функций (это зависит от ваших потребностей), таких как 2x RDP client или LogMeIn.