2013-04-17 9 views
6

Sto provando ad aprire una sessione rdp su un server dalla mia pagina web.Come RDP da una pagina Web

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

Il file bat ha appena la riga seguente scritto in esso: mstsc/v: emea-Cirrus

Quello che succede è che il file appena viene visualizzata nel browser Chrome come file di testo. Quindi la pagina web si carica e dice letteralmente "mstsc/v: emea-cirrus" in alto. Come posso farlo per avviare il client desktop remoto e andare all'indirizzo?

Ho anche provato a creare un file .rdp e referenziare che è l'href, anch'esso visualizzato semplicemente come testo normale. Il file RDP è stato creato utilizzando il seguente codice:

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 
+0

I browser sono in modalità sandbox per evitare questo tipo di comportamento che desideri. In genere non si desidera visitare alcune pagine casuali per richiamare alcuni eseguibili sul proprio computer, potenzialmente a causa di chissà quali danni. Se qualcosa di simile può essere reso possibile, dovrebbe essere fatto con alcune sostituzioni di sicurezza. E anche allora, non penso che sarebbe consigliabile senza precauzioni. Supponiamo che 'wtf.bat' venga sovrascritto. Cosa potrebbe fare un file batch sostituito che non sarebbe terribilmente buono per le imprese? – JayC

+0

Ho visto macchine virtuali accessibili tramite controlli ActiveX (solo IE) e sentito parlare di VNC con HTML5 Canvas e WebSockets, ... hai ancora delle opzioni, se vuoi un accesso tipo RDP, suppongo. In caso contrario, l'esecuzione di alcuni file eseguibili o batch accessibili localmente richiederà la creazione di buchi di sicurezza in alcuni browser di tua scelta. – JayC

+1

Tre parole: '' – tripleee

risposta

1

Per motivi di sicurezza, non si può semplicemente eseguire un file batch tramite un collegamento da qualsiasi browser moderno.

È possibile farlo funzionare se si effettua il wrapping della chiamata al file batch in un VBScript ed eseguito tramite la shell. Tuttavia, dovrai abilitare le autorizzazioni ActiveX affinché IE lo consenta.

Per un esempio su come eseguire questa operazione, vedere here.

11

È possibile creare il file .RDP sul lato server, che Windows deve associare a Desktop remoto e forzare il browser a scaricarlo (anziché visualizzarlo). In PHP si dovrebbe fare così:

$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(); 

Ho usato questa tecnica prima e ha funzionato bene. L'utente farà clic sul collegamento, verrà richiesto di salvare o aprire e, se fanno clic su Apri, verrà avviato Desktop remoto con le impostazioni specificate.

EDIT

Esempio per .NET in particolare 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"); 
     } 
+4

Spero non ti dispiaccia, ho aggiunto un esempio per .NET - Ho fatto questo e funziona benissimo. Un consiglio è quello di utilizzare il RDP, fare tutte le impostazioni e poi sulla scheda generale, fare clic su opzioni e "Salva con nome". Copia tutte le impostazioni. Questo è fantastico perché puoi creare file RDP mentre sei in viaggio con il modulo del database o con un URL +1 --- E in realtà, questa dovrebbe essere la risposta! – ppumkin

+0

Ottima risposta, grazie.Ci sarebbe un modo per rimuovere il file dopo il lancio per non ingombrare l'area di download? – Federer

1

mi permetto di suggerire l'uso di un browser basato client RDP? Oggigiorno hai una scelta open source, da Guacamole FreeRDP-WebConnect se hai server Linux o Myrtille per Windows. Esistono anche software commerciali, con più funzionalità (dipende dalle tue esigenze) come 2X RDP client o LogMeIn.