Il est possible d'obtenir des informations sur les cartes réseau avec .Net en utilisant des classes du namespace System.Net.NetworkInformation. Le code ci-dessous permet de lister toutes les cartes et leurs états
foreach (NetworkInterface carte in NetworkInterface.GetAllNetworkInterfaces())
{
Console.WriteLine("Nom : " + carte.Name);
Console.WriteLine("Etat : " + carte.OperationalStatus.ToString());
}
{
Console.WriteLine("Nom : " + carte.Name);
Console.WriteLine("Etat : " + carte.OperationalStatus.ToString());
}
Il est aussi possible de désactiver ou d'activer des cartes réseau en passant par WMI. La méthode ci-dessous permet de désactiver une carte dont le nom est donné en paramètre (vous devez référencer la DLL System.Management)
void Désactiver_Carte(String carte)
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID = '" + carte + "'");
foreach (ManagementObject queryObj in searcher.Get()) if (queryObj["NetEnabled"].ToString() == "True")
{
ManagementObject classInstance = new ManagementObject("root\\CIMV2", "Win32_NetworkAdapter.DeviceID = '" + queryObj["DeviceID"] + "'", null);
ManagementBaseObject outParams = classInstance.InvokeMethod("Disable", null, null);
}
}