none
Setzen von DHCP eines NICs bei dem "IPEnabled" == false ist

    Frage

  • Hallo msdn Gemeinde,

    ich hätte eine Network Frage. Mit "WIM" und Win32_NetworkAdapterConfiguration kann man bei einer Network Interface Card eine IP setzen und auch wieder DHCP erlauben. Funktioniert soweit gut, jedoch muss die NIC auch "IPEnabled"== true sein.

    Die IP konnte ich auch ohne "IPEnabled" setzen. Kann man also auch DHCP wieder enable setzen wenn der NIC "IPEnabled"==false ist?

    Habe noch etwas von "netsh" gelesen, jedoch habe ich dies nicht zum Laufen gebracht. Kann mir jemand bei diesem Thema weiterhelfen?

    Danke schon mal.

    Liebe Grüße

    Donnerstag, 11. Oktober 2018 17:18

Alle Antworten

  • Hallo DontKnow92009,

    Hast Du versucht, die DHCPEnabled-Eigenschaft des Adapters zu verwenden? Wenn diese Eigenschaft False ist, bedeutet dies, dass DHCP nicht aktiviert ist und Du kanst es aktivieren. Zu diesem Zweck rufst Du die Funktion EnableDHCP auf dem Adapterobjekt auf. Weitere Informationen findest Du in diesem Artikel:
    Figure 2 Enabling DHCP
    Du kannst auch DHCP auf der NIC aktivieren, wenn IPEnabled falsch ist, wie in Lösung 1 des folgenden Threads beschrieben:
    C# separate preferred and alternate dns addresses into variables

    Gruß,

    Ivan Dragov


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.



    Freitag, 12. Oktober 2018 11:47
    Moderator
  • Hi Ivan,

    vielen dank für deine Antwort.

    Ich arbeite aktuell mit diesem Code:

            public void Set_autoIP()
            {
                ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");  
                ManagementObjectCollection objMOC = objMC.GetInstances();
    
                foreach (ManagementObject objMO in objMOC)
                {
                    string description = objMO["Description"] as string;
    
                    if (string.Compare(description, Nic, StringComparison.InvariantCultureIgnoreCase) == 0)
                    {
                        try
                        {
                            if ((bool)objMO["IPEnabled"])
                            {
                                objMO.InvokeMethod("EnableDHCP", null);
                                System.Windows.MessageBox.Show("DHCP is set", "Information");
                            }
                            else
                            {
                                System.Windows.MessageBox.Show("Unable to set DHCP!", "Error");
                            }
                            
    
                        }
                        catch (Exception ex)
                        {
                            System.Windows.MessageBox.Show("Error Message: " + ex.Message,"Error");
                        }
                    }
                }
               
            } 

    Ich verwende also die Funktion EnableDHCP auf dem Adapter obj. Wenn ich mein NIC, anwähle (ist die Netzwerkkarte bei der im Moment kein LAN Kabel angeschlossen ist und somit IPEnabled==false ist) dann geht er mit der oben genannten Funktion sofort in den Pfad zu 

    System.Windows.MessageBox.Show("Unable to set DHCP!", "Error");

    Selbst wenn ich jetzt in diesem Pfad die Invoke Methode mit EnableDHCP rein schreibe, verändert sich nicht die Einstellung, die ich aber manuell treffen und einstellen könnte. (bei Eigenschaften von Internetprotokoll, Version 4 "IP-Adresse automatisch beziehen"). Bei einem NIC welches aktiv ist funktioniert der Code einwandfrei, will aber auch ein NIC welches IPEnabled == false ist setzen.

    Zu deinem Lösungsvorschlag "Figure 2 Enabling DHCP": Dieser Lösungsvorschlag frägt auch wieder ab "Where IPEnabled = 'True'" und somit würde das wieder nicht funktionieren.

    Zu deinem Lösungsvorschlag "C# separate preferred and alternate dns addresses into" Solution 1: Der benutzt ja mehr oder weniger das was ich auch habe, aber auch hier wird wieder nach IPEnabled gefragt.

    Kann ich überhaupt die Option "IP-Adresse automatisch beziehen" mit Coding einstellen wenn IPEnabled==false ist? Manuell geht es wie schon erwähnt, deswegen hätte ich gedacht man kann es auch programmieren. Oder hab ich irgendeine Einstellung vergessen?

    Liebe Grüße

    DontKnow

    Samstag, 13. Oktober 2018 08:53