というか、それについて何ができますか?
私の目的は、.NET を使用して、ホーム ネットワーク内のアクセス可能なすべてのネットワーク デバイスを一覧表示することです。できれば、WIN32 API を掘り下げたり、一連のファンキーな WMI クエリに頼ったりする必要はありません。
次のコードはまさにそれを行います。
Imports System.DirectoryServices
(...)
Dim network As New DirectoryEntry()
network.Path = "WinNT:"
For Each workgroup As DirectoryEntry In network.Children()
For Each computer As DirectoryEntry In workgroup.Children
If computer.SchemaClassName = "Computer" Then
Console.WriteLine(computer.Name)
End If
Next
Next
ただし、このコードを実行するとChildren
、DirectoryEntry インスタンスの getter にアクセスするときに、非常に顕著な遅延が発生します。私のネットワークには、3 台のデバイスが接続された 1 つのワークグループしかありませんが。大規模なサブネットでは、問題がさらに悪化することが想像できます。
繰り返しますが、これはなぜですか?どうすればよいですか?