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 ?
Isaac
Juillet 2, 2023, 7:26
2
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);
}
}
}
}
}
}