2009-08-13 62 views
0

我正在编写一个应用程序来测试RDP与VM Windows 2003服务器的连接。典型的故障模式是服务器上运行的某些代码自行进入循环,防止RDP连接 - 以及大多数其他类型的连接。发生这种情况时,您仍然可以ping服务器,但似乎没有问题,但您无法做其他任何事情。我试图启动ActiveX RDP客户端(MSTSC ..),但这需要人为干预,并不能很好地工作。我在这里发现了另一个帖子,它有专家Sexchange的可能解决方案,但该解决方案使用Java和Net :: Telnet库,我无法访问它。如何自动测试到Windows 2003服务器的连接?

.NET阵营的任何想法?

谢谢, 戴夫

回答

0

您可以使用无证WinStationServerPing API来检查连接到终端服务器。基本上,如果此功能成功,这意味着终端服务器可用。

这是(从winsta.dll出口)的功能(德尔福)签名:

function WinStationServerPing(hServer: HANDLE): BOOLEAN; stdcall; 
+0

我真的不知道这是否会起作用,因为我改变了工作,无法访问原始应用程序。尽管如此,这听起来像是迄今为止我听到的最好的方法...... – DaveN59

0

使用TCPClient尝试连接到服务器上的3389(或任何与你配置),如果你得到一个连接,断开连接并报告成功,如果连接被拒绝报告失败。

class Program 
    { 
     static void Main(string[] args) 
     { 
      RDPAvailable("someserver", 3389); 
     } 
     public static bool RDPAvailable(string remoteHost, int port) 
     { 
      bool available=false; 
      try 
      { 
       TcpClient client = new TcpClient(remoteHost, port); 
       client.Close(); 
       available = true; 
      } 
      catch (Exception ex) 
      { 
       //do some logging or whatnot 
      } 
      return available; 
    } 

编辑:一些常见的代码

MsRdpClient51.Server = somServer 
MsRdpClient51.UserName = somUserID 
MsRdpClient51.Domain = someDomain 
MsRdpClient51.AdvancedSettings6.ClearTextPassword = somePassword 
MsRdpClient51.Connect 
+0

你碰巧有一个链接到示例代码? (我不需要太多,是吗?) 戴夫 – DaveN59

+0

没关系,我在VS帮助中发现它...想象一下! – DaveN59

+0

大声笑,那么这里是一个控制台的例子反正;) – cmsjr

相关问题