Comment modifier les paramètres du réseau (adresse IP, DNS, nom d'hôte) en C#?

Je suis en train de développer un assistant pour une machine qui doit être utilisée comme backup de d’autres machines. Lorsqu’elle remplace une machine existante, elle doit remplacer son adresse IP, son DNS, et son nom d’hôte pour qu’ils correspondent à ceux de la machine remplacée.

Existe-t-il une bibliothèque en .net (C#) qui me permette de faire cela par programmation ?

Le code suivant vous permet de modifier les paramètres du réseau (adresse IP, DNS, nom d’hôte) en C#

using System;
using System.Management;

namespace WindowsNetworkParam
{
  class NetworkParam
  {
	//modifier l'adresse IP
    public void setIP(string adresse_ip, string mask_sous_reseau)
    {
      ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
      ManagementObjectCollection objMOC = objMC.GetInstances();

      foreach (ManagementObject objMO in objMOC)
      {
        if ((bool)objMO["IPEnabled"])
        {
          ManagementBaseObject setIP;
          ManagementBaseObject newIP = objMO.GetMethodParameters("EnableStatic");

          newIP["IPAddress"] = new string[] { adresse_ip };
          newIP["SubnetMask"] = new string[] { mask_sous_reseau };

          setIP = objMO.InvokeMethod("EnableStatic", newIP, null);
        }
      }
    }
	
	//modifier le DNS
    public void setDNS(string NIC, string DNS)
    {
      ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
      ManagementObjectCollection objMOC = objMC.GetInstances();

      foreach (ManagementObject objMO in objMOC)
      {
        if ((bool)objMO["IPEnabled"])
        {
          if (objMO["Caption"].Equals(NIC))
          {
            ManagementBaseObject newDNS =
              objMO.GetMethodParameters("SetDNSServerSearchOrder");
            newDNS["DNSServerSearchOrder"] = DNS.Split(',');
            ManagementBaseObject setDNS =
              objMO.InvokeMethod("SetDNSServerSearchOrder", newDNS, null);
          }
        }
      }
    }
  }
}