2009-11-19 9 views

Antwort

1

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

+0

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 ... ??? –

+0

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

+0

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: –

2

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.

+0

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

Verwandte Themen