string serviceName = "SYSTEM\\CurrentControlSet\\Services\\" +
serviceKey.GetValue("ServiceName").ToString() + "\\Parameters\\Tcpip";
RegistryKey key = Registry.LocalMachine.OpenSubKey (serviceName);
if (key == null)
Console.WriteLine("No IP configuration set");
else
{
foreach (string addr in (string[])key.GetValue("IPAddress"))
Console.WriteLine("IP Address : {0}", addr);
foreach (string mask in (string[])key.GetValue("SubnetMask"))
Console.WriteLine("Subnet Mask : {0}", mask);
foreach (string gate in (string[])key.GetValue("DefaultGateway"))
Console.WriteLine("Gateway : {0}", gate);
key.Close();
}
}
serviceKey.Close();
}
Registry.LocalMachine.Close();
Console.WriteLine("\n\n");
}
Сетевую информацию также можно получить из поддерживаемой операционной системой Windows специальной инфраструктуры, или проще, базы данных WMI (Windows Management Instrumentation). Она реализует одну из инициатив Microsoft (попытку разработать и ввести общий стандарт) под именем WBEM (Web-Based Enterprise Management). Эта инициатива направлена на унификацию методов получения информации о программах и аппаратуре, которые не должны зависеть от ее типа и производителя.
Инициатива WBEM, в свою очередь, основана на схеме, называемой Common Information Model (CIM), которая представляет собой промышленный стандарт, разработанный организацией DMTF (Distributed Management Task Force). В разработке WBEM, впервые предложенной в 1996, участвовали такие компании, как: Cisco Systems, Intel Compaq Computer и BMC Software. Спецификация CIM описывает некий язык моделирования, способы обозначения и преобразования информации, используемые при сборе и передаче данных, полученных из источников различной природы. Интересующая нас информация содержится в таблице NetworkAdapterConfiguration базы данных WMI. Запрос к этой таблице возвращает коллекцию данных об одном из сетевых интерфейсов. Следующая таблица перечисляет поля таблицы NetworkAdapterConfiguration.
Field |
Description |
DefaultIPGateway |
Массив IP-адресов маршрутизаторов, присвоенных данному устройству |
Description |
Имя, или описание устройства |
DHCPEnabled |
Флаг динамического способа присвоения IP-адреса |
DHCPServer |
Имя DHCP-сервера, который присвоил IP-адрес |
DNSHostName |
Доменное имя (DNS) хост-компьютера, который распознает имена |
IPAddress |
Массив IP-адресов, присвоенных данному устройству |
IPEnabled |
Использует-ли устройство сетевой IP-адрес |
IPSubnet |
Массив IP subnet адресов, используемых данным устройством |
MACAddress |
Ethernet MAC-адрес, присвоенный данному устройству |
Рассмотрим, как получить сетевую информацию, опрашивая базу данных WMI с помощью классов библиотеки .NET Framework, обитающих в пространстве имен System.Management.
public static void Main()
{
Console.WriteLine("\tNetwork Info\n");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");
foreach (ManagementObject mo in searcher.Get())
{
Console.WriteLine(
"\nDNSHostName :\t {0}\nNetwork Card:\t {1}" +
"\nMAC Address :\t {2}\nDHCPServer :\t {3}",
mo["DNSHostName"], mo["Description"], mo["MACAddress"], mo["DHCPServer"]);
foreach (string addr in (string[])mo["IPAddress"])
Console.WriteLine("IP Address :\t {0}", addr);
foreach (string subnet in (string[])mo["IPSubnet"])
Console.WriteLine("Subnet Mask :\t {0}", subnet);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.