Хостинг сеанса RemoteAPP в Winform

продолжайте возвращаться к этому и не можете понять это... Я создаю приложение для работы, которое по существу компилирует все наши инструменты в один более простой в использовании GUI. Один из инструментов, которые мы используем, - это то, что мы используем от 3-й стороны и размещается как удаленное приложение через RDWeb. Теперь у меня также есть обычный удаленный доступ к рабочему столу, и я могу получить доступ к рабочему столу через Winform с помощью MSTSC и этот процесс который работает красиво. Мне интересно, можно ли просто загрузить RemoteAPP и не весь рабочий стол в элементе управления MSTSC, чтобы мои пользователи не попали на полный рабочий стол. Или если есть какой-либо другой способ размещения RemoteAPP только в Winforms.

Я просмотрел документацию MSDN на ITSRemoteProgram но когда я пробую следующее, он просто выдает исключение.Отладчик останавливается на rdp.RemoteProgram.RemoteProgramMode = true; и дает HRESULT исключения значение e_fail.

Я также попытался с помощью remoteprogram после onconnected событий срабатывает, и я получаю то же самое результаты.

try
{
    rdp.Server = "FFWIN2008R2DC.fflab123.net";
    rdp.Domain = "fflab123";
    rdp.UserName = "administrator";
    IMsTscNonScriptable secured = (IMsTscNonScriptable)rdp.GetOcx();
    secured.ClearTextPassword = "password123";
    rdp.OnConnected += rdp_OnConnected;
    rdp.RemoteProgram.RemoteProgramMode = true;
    rdp.RemoteProgram2.RemoteApplicationName = "Calculator";
    rdp.RemoteProgram2.RemoteApplicationProgram = @"C:Windowssystem32calc.exe";

    rdp.Connect();
}
catch (Exception Ex)
{
    MessageBox.Show("Error Connecting", "Error connecting to remote desktop " + " Error:  " + Ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
}

возможно, я иду по неправильному пути или, возможно, это даже невозможно. Я просто хотел бы подтолкнуть в правильном направлении, мне не нужно, чтобы кто-то написал это для меня.

1 ответов


IMsRdpClient.RemoteProgram.RemoteProgramMode действителен только для клиентов, инициализированных из MsRdpClientNotSafeForScripting класса идентификаторов. См.эта страница MSDN для соответствующих CLSIDs, или использовать AxMsRdpClientNotSafeForScripting класс взаимодействия.

var rc = new AxMsRdpClient7NotSafeForScripting();
rc.Dock = DockStyle.Fill;
this.Controls.Add(rc);
rc.RemoteProgram.RemoteProgramMode = true;
// ServerStartProgram can only be called on an open session; wait for connected until calling
rc.OnConnected += (_1, _2) => { rc.RemoteProgram.ServerStartProgram(@"%SYSTEMROOT%\notepad.exe", "", "%SYSTEMROOT%", true, "", false); };
rc.Server = "server.name";
rc.UserName = "domain\user";
// needed to allow password
rc.AdvancedSettings7.PublicMode = false;
rc.AdvancedSettings7.ClearTextPassword = "password";
// needed to allow dimensions other than the size of the control
rc.DesktopWidth = SystemInformation.VirtualScreen.Width;
rc.DesktopHeight = SystemInformation.VirtualScreen.Height;
rc.AdvancedSettings7.SmartSizing = true;

rc.Connect();