1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
string ifName = "Inconnue";
//Spécification de tous les paramètres requis pour créer une connexion avec la classe ConnectionOptions.
ConnectionOptions aConnectionOptions = new ConnectionOptions();
//Utilisation du namespace WMI dans lequel les opérations de gestion vont être effectuées.
ManagementScope aManagementScope = new ManagementScope(@"\\localhost\root\cimv2", aConnectionOptions);
//La classe ObjectQuery représente une requête de gestion qui retourne des instances ou des classes
System.Management.ObjectQuery aObjectQuery = new System.Management.ObjectQuery("select * from Win32_NetworkAdapterConfiguration where IpEnabled = true");
//La classe ManagementObjectSearcher permet d'extraire une collection d'objets de gestion, en fonction de la requête spécifiée lors de son instanciation par le paramètre ObjectQuery ou directement par une string si l'on " code en dur ".
ManagementObjectSearcher aManagementObjectSearcher = new ManagementObjectSearcher(aManagementScope, aObjectQuery);
//ManagementObjectCollection représente différentes collections d'objets de gestion extraits via WMI.
ManagementObjectCollection aManagementObjectCollection = aManagementObjectSearcher.Get();
//ManagementObject est un objet de gestion de données.
string text = "";
if (aManagementObjectCollection != null)
{
foreach (ManagementObject aManagementObject in aManagementObjectCollection)
{
if (aManagementObject["Description"] != null)
{
ifName = aManagementObject["Description"].ToString();
}
string[] ipArray = { "192.168.0.100" };
string[] subnetArray = { "255.255.255.0" };
string[] defaultGatewayArray = { "192.168.0.50" };
UInt16[] gatewayMetricsArray = { 1 };
string[] dnsServersArray = { "194.2.0.20", "194.2.0.50" };
object[] param = { ipArray, subnetArray };
// Passer en ip Statique, et définir une nouvelle IP et un nouveau masque de sous réseau (ne fonctionne pas)
ManagementBaseObject outParams = null;
ManagementBaseObject inParams = aManagementObject.GetMethodParameters("EnableStatic");
inParams["IPAddress"] = ipArray;
//inParams["IPAddress"] = "192.168.0.100";
inParams["SubnetMask"] = subnetArray;
outParams = aManagementObject.InvokeMethod("EnableStatic", inParams, null);
//object t = aManagementObject.InvokeMethod("EnableStatic", param);
// Affiche le code d'erreur 0 = OK, sans redémarrage requis du PC, pourtant l'adresse devient 169.254.xxx.xxx/16
MessageBox.Show(outParams["returnValue"].ToString(), "EnableStatic");
// Définir la passerelle par défaut (fonctionne)
inParams = aManagementObject.GetMethodParameters("SetGateways");
inParams["DefaultIpGateway"] = defaultGatewayArray;
inParams["GatewayCostMetric"] = gatewayMetricsArray;
outParams = aManagementObject.InvokeMethod("SetGateways", inParams, null);
MessageBox.Show(outParams["returnValue"].ToString(), "SetGateways");
// Remttre en DHCP (fonctionne)
inParams = aManagementObject.GetMethodParameters("EnableDHCP");
outParams = aManagementObject.InvokeMethod("EnableDHCP", inParams, null);
MessageBox.Show(outParams["returnValue"].ToString());
}
} |
Partager