Установка сетевых настроек с помощью WMI


Описываем класс опций адаптера:
public class AdapterOptions
{
   string _adapterName; // Имя адаптера
   public string AdapterName
   {
      get { return _adapterName; }
      set { _adapterName = value; }
   }

   string _macAddress; // MAC адрес
   public string MACAddress
   {
      get { return _macAddress; }
      set { _macAddress = value; }
   }
   string [] _ipAdress; // IP адрес
   public string [] IpAdress
   {
      get { return _ipAdress;}
      set { _ipAdress = value;}
   }
}
Получение его опций можно произвести следующим образом:

public static AdapterOptions GetAdapterOptions(string AdapterName)
{
   AdapterOptions adapterOptions = new AdapterOptions();
   ManagementClass netAdapters = new         ManagementClass("Win32_NetworkAdapterConfiguration");
   ManagementObjectCollection netAdaptersCollection = netAdapters.GetInstances();
   foreach (ManagementBaseObject managementBaseObject in netAdaptersCollection)
   {
      if (!(bool)managementBaseObject["ipEnabled"])
       continue;
      if ((string)managementBaseObject["Caption"] == AdapterName)
      {
         adapterOptions.AdapterName = AdapterName;
         adapterOptions.ServiceName = (string) managementBaseObject["ServiceName"];
         adapterOptions.MACAddress = (string) managementBaseObject["MACAddress"];
         adapterOptions.IpAdress = (string[]) managementBaseObject["IPAddress"];
         adapterOptions.SubnetMask = (string[]) managementBaseObject["IPSubnet"];
         adapterOptions.Gateways = (string[]) managementBaseObject["DefaultIPGateway"];
         adapterOptions.DNSAddresses = (string[]) managementBaseObject["DNSServerSearchOrder"];
         return adapterOptions;
      }
   }
   return null;
}
И, соответственно, установка:
public static void SetAdapterOptions(AdapterOptions adapterOptions)
{
    ManagementClass netAdapters = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection netAdaptersCollection = netAdapters.GetInstances();
    foreach (ManagementObject managementBaseObject in netAdaptersCollection)
    {
        if (!(bool)managementBaseObject["ipEnabled"])
            continue;
        if ((string)managementBaseObject["Caption"] == adapterOptions.AdapterName)
        {
            try
            {
                // Устанавливаем IP адреса и маски подсети
                // Получаем параметры метода
                ManagementBaseObject ipAddr = managementBaseObject.GetMethodParameters("EnableStatic");
                // Устанавливаем их
                ipAddr["IPAddress"] = adapterOptions.IpAdress;
                ipAddr["SubnetMask"] = adapterOptions.SubnetMask;
                // Вызываем метод с указанными параметрами
                managementBaseObject.InvokeMethod("EnableStatic", ipAddr, null);

            }
            catch (Exception)
            {
                MessageBox.Show("Got error while trying to change adapter parameters", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            MessageBox.Show("Setting new options successfully complete", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            return;
        }
    }
}

Комментариев нет:

Отправить комментарий

Большая просьба, не писать в комментариях всякую ерунду не по теме!