2

我目前正在使用以下代码在给定的 WinNT 域中查找计算机,因为 WinNT 域不支持 DirectorySearcher;

protected void ScanDomain(string domainName, bool isLocalDomain)
{
    DirectoryEntry parentEntry = new DirectoryEntry();

    if(isLocalDomain)
    {
        try
        {
            parentEntry.Path = "WinNT://" + domainName;

            int numResults = 0;
            foreach (DirectoryEntry childEntry in parentEntry.Children)
            {
                switch (childEntry.SchemaClassName)
                {
                    case "Computer":
                        Debug.WriteLine(childEntry.Name);

                        numResults++;
                        break;
                }
            }

            if (numResults == 0)
            {
                Debug.WriteLine("No results.");
            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine("Failed.");
        }
    }
    else
    {
        //...
    }
}

但是,当使用这种方法时,即使我知道域中的计算机比计算机多,我也只收到 20 台计算机结果。

所以我只是想知道是否有人知道这是为什么?

4

1 回答 1

0

Directory Entry 返回特定节点的子节点。这将不包含节点下的节点,意味着它的孙子。尝试检查孙子,并在 WIN NT 下获取每个节点,这将起作用。

如果您需要代码片段,请告诉我。或者我错过了我身边的任何东西。

于 2011-07-25T13:23:48.003 回答