2016-06-16 7 views
0

私は、自分のマシン上でWindowsサービスを実行し、結果をその名前でフィルタリングし、サービス名、ポート、およびサービスのステータスを表示する簡単なアプリケーションを持っています。Windowsサービスが実行されているポートを取得する方法は?

現在、名前とステータスは正常に見つかりましたが、ポートに関連するプロパティを見つけるのは難しいです。以下の方法でこの情報にアクセスできますか、私のアプローチを完全に変更する必要がありますか?

ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("SELECT * FROM Win32_Service"); 

ManagementObjectCollection collection = searcher.Get(); 

foreach (ManagementObject obj in collection) 
{ 
    string name = obj["Name"] as string; 

    if (name.StartsWith("something")) 
    { 
    string pathName = obj["PathName"] as string; 
    string status = obj["State"] as string;  
    //string port = ??; 

    MyService sc = new MyService() 
     { 
      Name = name, 
      Status = status, 
      //Port = port, 
      Updated = true 
     }; 
    } 
} 

ありがとうございます!

+0

A Windowsサービスのような複数の質問があります。それぞれのバージョンとプラットフォームのタイプ)、サービスがTCP/IPを介して通信しない可能性があるためです。 Windowsサービスでは、複数のIIS Admin(IISインスタンスも管理)などを使用することがあります。通常、ポートの選択はサービスに依存し、利用可能であると仮定されているため、登録されているとは思われませんが、Windowsネットワークスタックは実行中のアプリケーションに対して接続情報を提供できる場合があります。特定のサービス、または例がありますか? –

+0

私は説明をありがとう、参照してください。はい、私がリストしているサービスは、私が開発した他のアプリケーションを使って手動で作成したものなので、特定のものです。回避策として、選択したポートを実行可能パス内のサービス作成パスに格納していましたが、このアプローチが実装されていないポートがあります。 –

答えて

0

netstat -a -b 

を助けることができるコマンド。しかし、もしそれが管理者の権利を弱めるなら。

も見て:

Which PID listens on a given port in c#

などのためには、Microsoft .NET Framework NGENサービスなどのポートを(持っている必要はなく、その

関連する問題