如何通过Web服务器从其他客户端控制Windows客户端?

时间:2016-01-20 13:29:44

标签: asp.net .net wcf sockets signalr

摘要

我正在尝试在.net C#中创建一个系统,这是一个控制Windows客户端的IT工具,无论他们身在何处。代理需要通过https进行操作,并且控制权将通过代理Web服务器提供给世界上的管理控制台。我需要的控件类型的示例是命令行,注册表,文件浏览器和VNC。

当管理控制台请求时,客户端需要立即响应(如果它在线)。我知道这需要某种与Web服务器的持久连接。

详细

我目前正在使用运行WCF的Web服务器。在客户端上运行的代理运行良好,因为客户端可以告诉Web服务器它在计时器上的状态,但是我很难知道管理控制台如何通过WCF连接请求代理控制注册表等。这是否需要使用其他技术打开新连接?

我发现有一些技术,例如SignalR,看起来非常有趣并且可以提供帮助,但它的目的是发送<32KB的信息/消息,这显然不会使用注册表等远程工具。

我看到其他人使用像Kaseya和Naverisk这样的遥控技术,这是非常令人沮丧的。他们使用什么样的方法?

要求

代理不允许任何端口进入,因此必须通过https建立与Web服务器的连接,以便从管理控制台接收请求。

问题

有人可以指出我在哪种技术可以通过网络服务器进行此类通信的正确方向?

我只知道.net,但如果需要,我会准备好研究其他技术。

1 个答案:

答案 0 :(得分:0)

您可以使用websockets,一旦建立连接,代理的出站连接就会升级为双向连接。然后,管理控制台可以通过套接字发送消息。有许多.NET的websocket库可以提供帮助,可以使用WCF NetHTTPSBinding。

或者,Azure中提供的具有WCF绑定的Azure Service Bus Relay可以执行此操作 - 双方建立出站连接,然后相互发送和接收消息。当一端在Azure中时,这可以更可靠地工作,但是使用Azure外部两端的中继也可以工作。

可以通过在正确的安全上下文(ACL)下运行的Windows应用程序(例如Windows服务)访问Windows注册表。