Есть ли класс / пространство имен .net для просмотра машин в сети?

Я пытаюсь написать приложение wpf, которое позволяет мне просматривать список серверов / компьютеров в сети (AD или Workgroup).

Раньше я открывал окна типа проводника для просмотра папок или каталогов, используя такой код, как

System.Diagnostics.Process.Start("Explorer.exe");

Но в этом случае мне не нужно, чтобы пользователь выбирал папку или файл, просто просматривайте имена машин в сети.

Может ли кто-нибудь предложить какие-либо классы или пространства имен .net, которые поддерживают этот тип функциональности? Я бегло прочитал о WMI, и похоже, что пространство имен System.Management может быть лучшим маршрутом. Может ли кто-нибудь дать мне несколько предложений, чтобы сузить круг вопросов, которые я могу использовать в этом пространстве имен?

-Ваше здоровье


person rlcrews    schedule 27.10.2012    source источник


Ответы (1)


C #: вы можете использовать библиотеку оболочки решений Gong

using System.Collections; using System.Collections.Generic; используя GongSolutions.Shell; using GongSolutions.Shell.Interop;

public sealed class ShellNetworkComputers : IEnumerable<string>
{
    public IEnumerator<string> GetEnumerator()
    {
        ShellItem folder = new ShellItem((Environment.SpecialFolder)CSIDL.NETWORK);
        IEnumerator<ShellItem> e = folder.GetEnumerator(SHCONTF.FOLDERS);

        while (e.MoveNext())
        {
            Debug.Print(e.Current.ParsingName);
            yield return e.Current.ParsingName;
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}
person Community    schedule 27.10.2012
comment
спасибо за предложения, но несколько вопросов. Первое использование записи в каталоге похоже на AD, которое не решает мою потребность в обнаружении элементов в сети независимо от AD. Я, конечно, предполагаю это, поскольку в настоящее время я тестирую в сети, отличной от AD, и предоставленный вами фрагмент продолжает давать сбой в объекте ParentEntry с тех пор (недействительный объект, поскольку он не находится в AD). если это неверно, я буду признателен за любые исправления. Благодарность - person rlcrews; 28.10.2012