IP ändern mit WMI

GalaxyWarrior

Erfahrenes Mitglied
Hallo Community,
ich habe versucht eine Anwendung zu schreiben mit der ich die TCP/IP Einstellungen meines Rechners ändern kann.
Ich habe momentan folgende Funktion:

Code:
private void setIP(NIC nic)
        {
            ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection objMOC = objMC.GetInstances();
            
            foreach (ManagementObject objMO in objMOC)
            {
                if (!(bool)objMO["IPEnabled"])
                    continue;

                if (objMO["Caption"].ToString().Split(' ')[0].Replace("[", "").Replace("]", "") == nic.id)
                {
                    try
                    {
                        ManagementBaseObject objNewIP = null;
                        ManagementBaseObject objSetIP = null;
                        ManagementBaseObject objNewGate = null;
                        objNewIP = objMO.GetMethodParameters("EnableStatic");
                        objNewGate = objMO.GetMethodParameters("SetGateways");


                        objNewGate["DefaultIPGateway"] = nic.gateway.ToArray<string>();
                        objNewGate["GatewayCostMetric"] = new int[] { 1 };
                        objNewIP["IPAddress"] = nic.ipaddress.ToArray<string>();
                        objNewIP["SubnetMask"] = nic.subnetmask.ToArray<string>();
                        objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, null);
                        objSetIP = objMO.InvokeMethod("SetGateways", objNewGate, null);
                        Console.WriteLine("Updated IPAddress, SubnetMask and Default Gateway!");
                        break;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Unable to Set IP : " + ex.Message);

                    }
                }
            }
        }

Dabei ist NIC eine Klasse die ich selber erstellt habe, sind aber auch nur strings die da gespichert werden, nic.id enthält die ID des Netzwerkadapters und entsprechend dessen wird im "if" geprüft ob der richtige Adapter ausgewählt ist. Leider funktioniert das nicht, es macht einfach nichts. Hat einer ne idee? Bis auf die Anpassung mit dem "if", dem "break" am Ende des "try"-Blocks und der Klasse NIC (vorher wurden da 3 strings ip, netmask und gateway übergeben) habe ich das so im Internet gefunden.

Gruß GalaxyWarrior
 
Zurück