列出DirectoryEntry孩子:为什么这么慢?

时间:2012-05-11 13:43:58

标签: vb.net performance directoryservices

或者更确切地说:我能做些什么呢?

我的目标是使用.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

但是,如果您运行此代码,则在访问DirectoryEntry实例上的Children getter时会遇到令人难以置信的明显延迟。即使我的网络只有一个工作组有三个连接的设备。我可以想象在较大的子网上问题会变得更糟。

再说一遍,为什么会这样呢?我该怎么办呢?

0 个答案:

没有答案