Ich möchte eine Webanwendung ähnlich wie TS Web Access erstellen, wo ich RDP-Dateien im laufenden Betrieb für Remote-Apps erstellen kann, die auf dem Server konfiguriert sind. Irgendeine Idee??Generieren von RDP-Datei im laufenden Betrieb
Antwort
gut an einer ‚rdp‘ Datei sieht Nachdem dies der Inhalt ist:
screen mode id:i:2
desktopwidth:i:1280
desktopheight:i:768
session bpp:i:32
winposstr:s:2,3,1430,104,2230,704
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: [YOUR IP]
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:0
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:
Genau das schaffen als String, scheint einfach.
ps Ich habe keine Ahnung, was die ‚winposstr‘ Parameter ist ...
Wir hatten genau dieses zu tun.
private void InvokeRDPSign(String fileName, String certificateThumbPrint)
{
Process signingProcess = new Process();
signingProcess.StartInfo.FileName = @"rdpsign.exe";
String arguments = String.Format("/sha1 {0} {1}", certificateThumbPrint, fileName);
signingProcess.StartInfo.Arguments = arguments;
signingProcess.StartInfo.UseShellExecute = false;
signingProcess.StartInfo.RedirectStandardOutput = true;
signingProcess.StartInfo.WorkingDirectory = Environment.SystemDirectory;
signingProcess.Start();
String signingOutput = signingProcess.StandardOutput.ReadToEnd();
signingProcess.WaitForExit();
int exitCode = signingProcess.ExitCode;
//TODO: should we throw an error if the exitcode is not 0
}
Beachten Sie, dass, dass die RDPSign.exe auf jeder Windows-Version unterscheidet. Sie werden feststellen, dass eine ältere Version des Dienstprogramms neuere Einstellungen aus der Signatur ignoriert.
Ich musste ein erhöhtes Konto für die App verwenden Pool-Identität, um das zu schaffen. Wie andere Posts vorgeschlagen haben, werde ich diesen Code wahrscheinlich in einen Dienst auf dem Computer mit erhöhten Rechten verschieben, anstatt die App-Pool-Identität dauerhaft zu ändern. – Jason
das ist völlig in Ordnung, aber mein Remote werden digital mit einem Zertifikat signiert, das zwei zusätzliche Parameter in meiner RDP-Datei fügt hinzu: 1. signscope: s 2. Unterschrift: s Wie kann ich Werte für diese Parameter erstellen , diese verwenden SHA1 Hash ... ??? –
Ich weiß nicht, was mit diesen Zeugnissen los ist. Können Sie nicht ein gültiges RDP "Remote Application" erstellen und dann dieses Sig kopieren? oder ist die sig jedes mal anders? – Darknight
Unterschrift ist immer gleich, aber ich hv zu öffnen diff. app on diff buttons, und signatur hängt vom programmnamen der remote-app ab, sodass ich die signatur im laufenden betrieb ändern kann.Beispiel Rdp Dateiinhalt: –