2

DirectorySearcher は WinNT ドメインではサポートされていないため、現在、次のコードを使用して特定の WinNT ドメイン内のコンピューターを検索しています。

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

ディレクトリ エントリは、特定のノードの子を返します。これにはノードの下にノードは含まれず、その孫を意味します。孫の子もチェックしてみてください。WIN NT の下のすべてのノードを取得すると、うまくいきます。

コード スニペットが必要な場合はお知らせください。または、私の側から何かが欠けています。

于 2011-07-25T13:23:48.003 に答える