如何通过.NET创建远程应用程序连接?

时间:2013-10-10 08:34:26

标签: c# rdp remoteapp

到目前为止,我创建了一个应用程序,使用AxMsTscAxNotSafeForScripting类进行远程桌面连接。 一切都像魅力一样! 现在,我需要的是配置此对象以在连接时启动特定的应用程序。

让我们看看代码

AxMsTscAxNotSafeForScripting rpd = new AxMsTscAxNotSafeForScripting();
var client = (IMsRdpClient7)rdp.GetOcx();
client.RemoteProgram2.RemoteProgramMode = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).DisplayConnectionBar = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).ConnectionBarShowPinButton = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).BitmapVirtualCache32BppSize = 48;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).ConnectionBarShowRestoreButton = false;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).ConnectionBarShowMinimizeButton = true;

((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).EnableWindowsKey = 1;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).GrabFocusOnConnect = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).RedirectDrives = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).RedirectClipboard = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).RedirectPrinters = true;
((MSTSCLib.IMsRdpClientAdvancedSettings5)rdp.AdvancedSettings).RedirectPOSDevices = true;

rdp.Server = txtServer.Text;
rdp.UserName = txtUserName.Text;
IMsTscNonScriptable secured = (IMsTscNonScriptable)rdp.GetOcx();
secured.ClearTextPassword = txtPassword.Text;
rdp.FullScreenTitle = "Full Screen";
rdp.SecuredSettings.FullScreen = 1;
rdp.SecuredSettings.StartProgram = @"c:\windows\System32\calc.exe";
rdp.Connect();

完成所有这些后,我得到的是连接屏幕,但它是一个完整的黑屏。 然后,我评论第三行:     //client.RemoteProgram.RemoteProgramMode = true;

这为我提供了一个连接屏幕,在右侧计算机上,但没有应用程序出现。

我还尝试了rdp_OnConnected事件,添加了这段代码:

((ITSRemoteProgram)((IMsRdpClient7)rdp.GetOcx()).RemoteProgram2).ServerStartProgram(@"c:\windows\System32\calc.exe", null, @"C:\Windows\System32", false, "", false );

但仍然没有发生任何事情。

我很想在这里得到一些帮助。

2 个答案:

答案 0 :(得分:1)

如果您的系统是win7或xp,则应更改注册表。第一步是通过将注册表项HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList: fDisabledAllowList设置为值1来激活Windows 7上的RemoteApp。 如果您的系统是win server 2008,则应使用remoteapp manager将remoteapp添加到allowedlist。 之后,您可以使用ServerStartPro gram函数。

答案 1 :(得分:0)

注释掉这一行,它将完美运作。

// client.RemoteProgram2.RemoteProgramMode = true;