- - PR -
リモートコンピュータ名を取得する方法について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-01 16:04
本当にみなさん、ありがとうございます。
Ping /aはホスト名に解決できませんでした。 このコマンドもDNSから引っ張ってきているんでしょうか? nbtstatのコマンドのようにコンピュータ名を出せないものでしょうか? ただNbtstaは多くのPCに対して実行すると、時間が膨大にかかります。 以前、コマンドコンソールで実行すればいいかと思っていたのですが、 PingがMyクラスによって、簡単にできるようになったので、 コンピュータ名の取得も簡単にできないものかと試行錯誤しています。 gethostbyaddr をP/Invokeとはどういう意味でしょうか? 無知でほんとにすみません・・・・。 | ||||||||||||
|
投稿日時: 2007-08-01 16:16
その「普通のクライアントPCのコンピュータ名」というのは どのプロトコルでのコンピューター名前ですか? コンピューターのシステムのプロパティで出てくる名前なら DNSかNetBiosかNetBeuiでの名前ですが、 それでいいのですか?
ADならDNS、ワークグループならNetBiosというのが普通だと思います。 どんな環境でも取得できる方法はありません。 DNS使わないクライアントはNetBiosで解決しなければいけませんし、 NetBiosでの名前登録を行わないよう設定されているのでしたら DNSで問い合わせなければなりません。 また、DNSにもNetBiosにも名前を登録しないことも可能です。 その場合は解決できません。 | ||||||||||||
|
投稿日時: 2007-08-01 16:20
早速のご回答、まことにありがとうございます。
>>コンピューターのシステムのプロパティで出てくる名前なら >>DNSかNetBiosかNetBeuiでの名前ですが、 >>それでいいのですか? 以前はNbtstaコマンドでクライアントPCのコンピュータ名を取得していました。 これは、(たぶん)Netbios名を取得していたと思います。 ですので、NetBiosの名前で問題ないです。NetBeuiというのも有効なんでしょうか? ちょっと存知ないです・・・。 ご回答いただいているように、コンピュータのシステムのプロパティにでてくる名前で十分です。 | ||||||||||||
|
投稿日時: 2007-08-01 16:25
Invokeしなくても Dns.GetHostByAddressはNetBios名を返してくれたように思います。 | ||||||||||||
|
投稿日時: 2007-08-01 16:32
ではDns.GetHostByAddressを試してください。 だめならgethostbyaddrをInvokeしてください。 それでもだめならNbtstatしてください。 それでもだめなら、私にはわかりません。 | ||||||||||||
|
投稿日時: 2007-08-01 18:02
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1945938&SiteID=7
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-08-01 18:20
netbios 名の取得には
LMHOSTS にエントリをあらかじめ追加しておく、 WINS サーバを立てて PC を登録しておく、 ブロードキャストを流して返答を待つ をしないと取得できないと思います。 だから nbtstat で時間がかかる。 ブロードキャストを使うということはセグメントをまたぐと使えない。 というのも気にしておく必要がありますね。 _________________ かるあ のメモ と スニペット | ||||||||||||
|
投稿日時: 2007-08-01 19:59
確認したんですが。 Dns.GetHostByAddressも Dns.GetHostEntryもNetBios名を返してくれますね。 NBNSパケットをターゲットに投げてくれてました。
それは名前からIPを解決したい場合や 名前もわからないときですね。 今回はIPがわかってますから、 ブロードキャストの必要はないですね。 IPにNBNSパケットを飛ばすだけでOKです。
ですので、セグメントもまたげますね。 またげないのはブラウジングやブロードキャストですから。 MSDNフォーラムの方で >ただ、調査したいクライアントの数が膨大なため、DOSコマンドのPING、Nbtstaを使用するとかなり時間がかかります。 とかかれていますが、どのくらいの数なんでしょうか。 GetHostByAddressを同期で呼ぶと1秒くらいはかかりますから 100ぐらいでもうかなりきついですね。 自分でSocketで飛ばすにしても、 たくさんあったら非同期でたくさん飛ばさないとだめですね。 [ メッセージ編集済み 編集者: れい 編集日時 2007-08-01 20:00 ] |