.Net:如何通过远程桌面应用程序运行本地应用程序

时间:2012-03-16 10:36:40

标签: .net remote-desktop

这是我的情景:

  • ERP(Axapta 2009)安装到终端服务器,通过远程桌面为用户运行

我需要允许用户单击Ax按钮并运行本地应用程序(比如Outlook)..不是远程的,而是来自用户的PC。

Axapta允许我使用.Net代码(例如ProcessInfo)来运行外部进程/应用程序。

但我认为问题是通过RDP运行本地应用程序。 可能吗 ? 感谢

2 个答案:

答案 0 :(得分:2)

我也没有简单的方式,也没有任何托管的方式。

您感兴趣的API将是Remote Desktop Service Virtual Channels

  

虚拟通道应用程序有两个部分,客户端模块和服务器模块。服务器模块是在远程桌面会话主机(RD会话主机)服务器上运行的可执行程序。客户端模块是一个DLL,必须在远程桌面连接(RDC)客户端程序运行时加载到客户端计算机的内存中。

然后,您将使用标准的进程间信令与服务器模块进行通信,将“launch”命令转发给客户端模块,然后最终运行“本地”应用程序。

说实话,我认为不值得。

答案 1 :(得分:2)

我普遍同意Damien,但我想再提出一个可能的" hackish"通过远程桌面(RD)连接到远程主机的本地客户端之间进行带外通信的方式,即剪贴板。 RD的一个特性是它可以在远程和本地主机之间同步剪贴板,从而允许用户跨计算机边界进行复制粘贴。

您可以在服务器上以编程方式设置剪贴板内容,并且可以在客户端上设置剪贴板侦听器(在剪贴板更改时通知),这样您就可以通过RD执行简单的通信。我成功地使用了这种技术,telnet客户端会把东西放到剪贴板中,我的C#应用​​程序会监听它并在将某个魔术字符串放入剪贴板时启动应用程序。

设置剪贴板可以在.NET中本地完成,并且成为剪贴板监听器也可以通过.NET,P / Invoke-ing SetClipboardViewer和其他一些Win32 API来完成。