2009-11-19 3 views

ответ

1

хорошо Взглянув на файл «Rdp» это содержание:

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: 

Просто создать, что в строке, кажется простым.

пс Я понятия не имею, что параметр «winposstr» является ...

+0

это прекрасно, но мои RemoteApps цифровой подписью с сертификатом, который добавляет 2 дополнительные параметры в моем файле Rdp: 1. signscope: s 2. Подпись: s Как я могу создать значения для этих параметров , они используют SHA1 хэш ... ??? –

+0

Я не знаю, что происходит с этими сертификатами. не можете ли вы создать действительное «удаленное приложение» RDP, а затем скопировать этот сиг? или является сигнем каждый раз? – Darknight

+0

Подпись одинакова каждый раз, но я hv, чтобы открыть diff. приложение на кнопках diff, а подпись зависит от имени программы удаленного приложения, поэтому я хочу изменить подпись на лету.Пример содержимого RDP-файл: –

2

Мы должны были сделать это точно вещь.

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 отличается от каждой версии Windows. Вы увидите, что более старая версия утилиты будет игнорировать более новые настройки из подписи.

+0

Мне пришлось использовать повышенную учетную запись для приложения чтобы сделать эту работу. Как и другие сообщения, я, вероятно, собираюсь перенести этот код на службу на машине с повышенными привилегиями, а не на постоянное изменение идентификатора пула приложений. – Jason