gpt4 book ai didi

c# - 在 Winform 中托管 RemoteAPP session

转载 作者:可可西里 更新时间:2023-11-01 08:28:52 33 4
gpt4 key购买 nike

不断回到这个问题上,但无法弄清楚...我正在创建一个工作应用程序,它基本上将我们所有的工具编译成一个更易于使用的 GUI。我们使用的工具之一是我们从第三方使用的工具,并通过 RDWeb 作为远程应用程序托管。现在我也只有常规的远程桌面访问,我可以使用 MSTSC 和 this process 通过我的 Winform 访问桌面。效果很好。我很好奇是否可以只加载 RemoteAPP 而不是 MSTSC 控件中的整个桌面,这样我的用户就不会进入完整的桌面。或者如果有任何其他方式仅在 Winforms 中托管 RemoteAPP。

我已查看有关 ITSRemoteProgram 的 MSDN 文档但是当我尝试以下操作时,它只会抛出异常。调试器在 rdp.RemoteProgram.RemoteProgramMode = true; 处停止并给出 HRESULT E_FAIL 异常。

我也尝试在 OnConnected 事件触发后使用 remoteprogram,我得到了相同的结果。

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:\Windows\system32\calc.exe";

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

也许我做错了,或者根本不可能。我只是想在正确的方向上轻推我不需要任何人为我写这个。

最佳答案

IMsRdpClient.RemoteProgram.RemoteProgramMode 仅对从 MsRdpClientNotSafeForScripting 类 ID 初始化的客户端有效。参见 this MSDN page对于适当的 CLSID,或使用 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();

关于c# - 在 Winform 中托管 RemoteAPP session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837808/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com