0

VM Windows 2003 サーバーのバンクへの RDP 接続をテストするアプリを作成しています。典型的な障害モードは、サーバー上で実行されている一部のコードがループに陥り、RDP 接続が妨げられ、他のほとんどの種類の接続も妨げられることです。これが発生した場合でも、サーバーに ping を実行することはできますが、問題ないように見えますが、それ以外のことはほとんどできません。

C#、.NET 3.5、および RDP バージョン 6.1 を使用しています -- ActiveX RDP クライアント (MSTSC..) を起動しようとしましたが、これには人間の介入が必要であり、うまく機能しません。ここで、Expert Sexchange による解決策の可能性がある別の投稿を見つけましたが、その解決策は、私がアクセスできない Java と Net::Telnet ライブラリを使用しています。

.NET キャンプからのアイデアはありますか?

ありがとう、デイブ

4

2 に答える 2

0

文書化されていないWinStationServerPingAPIを使用して、ターミナルサーバーへの接続を確認できます。基本的に、この機能が成功した場合は、ターミナルサーバーが使用可能であることを意味します。

これは、関数(winsta.dllからエクスポートされた)の(Delphi)シグネチャです。

function WinStationServerPing(hServer: HANDLE): BOOLEAN; stdcall;
于 2009-09-27T19:06:33.783 に答える
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
于 2009-08-13T18:32:57.923 に答える