模拟终端服务
我是一名经验丰富的 Delphi 开发人员,希望创建诸如无缝终端服务之类的东西,其中应用程序在服务器上执行,但出现在客户端的桌面上。
对于在服务器上工作的人来说,我不希望他们看到远程应用程序正在运行(除非他们查看正在运行的进程列表)。
我不知道如何解决这个问题,从哪里开始,如何让应用程序渲染到服务器桌面以外的表面。
I am a seasoned Delphi developer and would like to create something like seamless terminal services where an application is executed on a server but appears on the the desktop of the client.
To someone working on the server I don't want them to see the remote application running (except if they looked in at the list of running processes).
I'm lost as to how to go about this, where to start, how to get an application to render to a surface other than the servers desktop.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从 2008 年开始,终端服务(已更名为远程桌面服务)提供的 RemoteApps 完全按照您的描述进行操作。 Citrix (XenApp) 可以在所有 Windows(服务器)版本上执行此操作。因此,在决定自己重新创建这些产品之前,您可能需要先查看一下这些产品。
如果您决定继续,这个链接可能会很有趣,它是名为“扩展 Microsoft 终端服务客户端以提供无缝 Windows”的示例项目
Starting from 2008 Terminal Services (which has been rebranded to Remote Desktop Services) offers RemoteApps which do exactly what you describe. Citrix (XenApp) can do this on all windows (server) versions. So you might want to look at those products before deciding to recreate them yourself.
If you do decide to go on, this link might be interesting, it's a sample project called "Extending Microsoft's Terminal Services Client To Provide Seamless Windows"
根据您的描述,我想说您应该考虑编写一个 Windows 服务(而不是终端服务)并使用进程间通信(IPC)系统来获取可以运行的“客户端”应用程序的状态信息由适当的用户在同一台计算机或网络上的另一台计算机上进行。
我自己,我正是使用 RemObjects SDK 来完成此操作,这使我的客户端应用程序看起来就像只是进行函数调用,但实际上它们会转到实现它们的服务器。然后,服务器可以在一个(或多个)线程中继续其工作,并且所有用户界面都在客户端中完成,客户端使用 IPC 通道找出要显示的内容。
From what you are describing, I'd say you should be looking at writing a windows service (not terminal services) and using a inter-process-communications (IPC) system to get status information to a "client" application that can be run by the appropriate user, either on the same machine or another over the network.
Myself, I do exactly this using the RemObjects SDK which makes my client application look like it is just making function calls, but actually they go to the server which implements them. The server can then get on with its job in one (or more) thread, and all the user interface is done in the client which finds out what to display using the IPC channel.