2011-03-04 3 views
0

私は、特定のIPアドレスの範囲に基づいて、自分のLANに接続されているすべてのコンピュータを取得するために、C#Winformsプログラムを作成しています。IPアドレス範囲に基づいてLAN上のコンピュータのみを取得するにはどうすればよいですか?

私はコンピュータを識別するためにPingクラスを使用しています。 しかし、ここでの問題は、LANに接続されている(プリンタ、IP電話など)すべてのデバイスからの応答が得られていることです。

これらのデバイスをフィルタリングしたり、LANからコンピュータのみを取得したりしてください。

+1

Windows上でSNMPやADなど他のものに頼らずに実際に話す方法はなく、100%ではありません。例えば、NMAPは指の印刷を試みます。 – Lloyd

+0

達成しようとしていることは何ですか?ネットワーク上のすべてのコンピュータを見つけたら、何をしたいですか?実行しているオペレーティングシステムについて気になっていますか? – Nick

答えて

3

それはあなたがこれを動作するようにNETBIOSやDNSなどの上位プロトコルを使用する必要があるだろうが、それは非常に多くの依存などのネットワーク・ノードは、コンピュータ/プリンタ/ IP電話であるかどうかをPINGを使用して伝えるために

不可能ですデバイスの実装方法について説明します。

+0

DNSを使用してホスト名を取得していますが、Dnsを使用してデバイスを区別する方法がわかりません。 – Prasad

+0

どちらかというと分かりません:)使用される命名規則がデバイスのタイプを反映しているかどうかによって異なります。 – Nick

0

まあ、プリンタ、電話などには、TCP/IPスタックと特殊なサーバーソフトウェアを実行する汎用コンピュータがある可能性があるので、「コンピュータ」の定義が何であるかがわかります。コンピュータが持つように思っているものだけを特定でき、それらのすべてが持つことができるものでなければ、それは価値があるよりももっと難しいように思えます。 Windowsネットワークでは、おそらくSMBですが、SMB経由でストレージを公開するNASを検出する可能性があります。

あなたがしたいことを行う一般的な方法はないと思います。 Lloyd氏が指摘するように、nmapはいくつかのフィンガープリンティングを行っていますが、それは完璧ではありません(通常、特定のOSバージョンにかなり近いですが、そのOSをどのような物理デバイスで実行しているのかわかりません)。

+0

他の方法を見つけることはできますか? netapi32で試してみましたが、ドメイン名/ワークグループに関係なくすべてのシステムを表示したいので、ドメイン名を指定する必要があります。私は資格情報を持っていないので、私はアクティブなディレクトリサービスを使用することはできません。 – Prasad

関連する問題