2009-11-19 22 views
5

TH Web Erişimi'ne benzer bir web uygulaması oluşturmak istiyorum; burada sunucu üzerinde yapılandırılan Uzak Uygulamalar için rdp dosyalarını anında oluşturabiliyorum. Herhangi bir fikir??Uçta RDP dosyası oluşturma

cevap

1

de bu içeriği olan bir 'rdp' dosyasına baktı:

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: 

Sadece bir dize olarak bu oluşturmak, basit görünüyor. Ben 'winposstr' parametresi nedir hiçbir fikrim yok

ps ...

+0

bu mükemmel iyi, ama benim RemoteApps dijital benim rdp dosyasında 2 ek parametreler ekleyen bir sertifika ile imzalanmış gibidir: 1. signscope: s 2. imzası: s nasıl bu parametreler için değerler oluşturabilir bunlar SHA1 hash kullanıyor ... ??? –

+0

Bu sertifikalarda neler olduğunu bilmiyorum. geçerli bir 'uzak uygulama' RDP'si oluşturamıyor ve sonra bu siglayı kopyalayamıyor musunuz? veya sig her seferinde farklı mıdır? – Darknight

+0

İmza her zaman aynıdır, ancak diff'i açmak için geldim. Fark düğmeleri ve uygulama uygulaması uzaktan uygulama programı adına bağlıdır, bu yüzden anında imzayı değiştirmek için hv.Numune rdp dosya içeriği: –

2

Biz Aynısını yapmak zorunda.

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 

}

RDPSign.exe pencerelerin her sürümünde farklı olduğunu unutmayın. Yardımcı programın eski bir sürümünün imzadan daha yeni ayarları görmezden geleceğini göreceksiniz.

+0

Uygulama için yüksek bir hesabı kullanmak zorunda kaldım Bu işi yapmak için havuz kimliği. Diğer yayınların önerdiği gibi, muhtemelen bu kodu, uygulama havuzu kimliğini kalıcı olarak değiştirmek yerine, yükseltilmiş ayrıcalıklarla makinedeki bir hizmete taşıyacağım. – Jason