Как узнать разницу между рабочими станциями и серверами в сети?

Я знаю, как получить машины на сервере, используя сеть System.DirectoryServices. Проблема в том, что я хотел бы игнорировать рабочие станции/компьютеры в сети и получать только серверы.

В случае, если кто-то скажет проверить версию ОС, проблема с получением номера версии ОС семейства Win NT заключается в том, что каждый номер может соответствовать как серверной, так и не -серверной ОС (, такой как NT версии 6.1, относящейся как к Win 7 и Win Server 2008 R2 ).

Вот мой базовый тестовый класс:

namespace Project1
{
    class Class1
    {
        public static void Main(string[] args)
        {
             List<string> list = Class1.GetComputersOnNetwork();           
        }

        public static List<string> GetComputersOnNetwork()
        {
            string fileName = "networkcomputers.txt";  

            // Delete the file if it exists.
            if (System.IO.File.Exists(fileName))
            {
                System.IO.File.Delete(fileName);
            }

            // Create the file.
            System.IO.FileStream fs = System.IO.File.Create(fileName, 1024);

            StreamWriter strwr = new StreamWriter(fs);

            int i = 0;
            List<string> list = new List<string>();
            DirectoryEntry root = new DirectoryEntry("WinNT:");           
            foreach (DirectoryEntry computers in root.Children)
            {                   
                if ((computers.Name != "Schema"))
                {
                    i++;
                    Console.WriteLine("Machine Number " + i + ": " + computers.Name);
                    strwr.WriteLine("Machine Number " + i + ": " + computers.Name);
                    list.Add(computers.Name);
                }           
            }
            return list;
        }
    }
}
5
задан Michael Myers 26 July 2012 в 14:56
поделиться