Mobile

C# Netzwerkadapter deaktivieren

N4ppel

Cadet 1st Year
Registriert
Juni 2010
Beiträge
8
Hallo nachdem mir hier vor einigen Tagen so gut bei meinem PowerShell Skript geholfen wurde und das endlich funktioniert, widme ich mich nun einem C# Skript. Ich habe vor ein paar Monaten bereits damit begonnen aber bin bis jetzt noch nicht viel weiter gekommen.

Anforderungen:
- Skript soll mit Windows starten und als Windows Dienst laufen (Funktioniert bisher teilweise).
- Wenn ein Netzwerkkabel angeschlossen wird sollte der WLAN Adapter deaktiviert werden und umgekehrt.
- Nach möglichkeit sollen Eventlogs beim Starten/Beenden des Dienstes und Aktivieren/Deaktivieren der Schnittstellen erstellt werden.
- Beim hochfahren des Rechners bzw. starten des Skripts muss ein initial Durchlauf erfolgen falls bereits LAN und WLAN Adapter aktiv sind.

Hoffe mir kann wieder jemand ein paar Code Snippets oder Tipps geben.

Hier der bisherige Code

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Management;
using System.Net.NetworkInformation;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           NetworkChange.NetworkAddressChanged += new
           NetworkAddressChangedEventHandler(AddressChangedCallback);
           Console.WriteLine("Listening for address changes. Press any key to exit.");
           Console.ReadLine();
        }
        static void AddressChangedCallback(object sender, EventArgs e)
        {
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface n in adapters)
            {
                Console.WriteLine(n.NetworkInterfaceType);
                if (n.NetworkInterfaceType.ToString() == "Ethernet") // LAN Adapter Ausgabe
                {
                    Console.WriteLine(n.Speed);
                    Console.WriteLine(n.OperationalStatus);
                    Console.WriteLine(n.Name);
                    Console.WriteLine(n.Description);
                    Console.WriteLine(n.Id);
                    if (n.OperationalStatus.ToString() == "Up")
                    {
                        Console.WriteLine("LAN Adapter is present");
                    }
                    else
                    {
                        Console.WriteLine("LAN Adapter is not present");
                    }
                }
                if (n.NetworkInterfaceType.ToString() == "Wireless80211") // WLAN Adapter Ausgabe
                {
                  Console.WriteLine(n.Speed);
                  Console.WriteLine(n.OperationalStatus);
                  Console.WriteLine(n.Name);
                  Console.WriteLine(n.Description);
                  Console.WriteLine(n.Id);
                  if (n.OperationalStatus.ToString() == "Up")
                  {
                       Console.WriteLine("WLAN Adapter is present");
                  }
                  else
                  {
                      Console.WriteLine("WLAN Adapter is not present");
                  } // End else
                } // End if
            } // End foreach
        } // End Function AddressChangedCallback
    } // End Class
} // End
 
Vielen Dank das mit den Eventlogs funktioniert perfekt und deaktivieren / aktivieren der Netzwerkadapter läuft auch.

Dein Beitrag hat mich ein großes Stück weiter gebracht.
 
Noch ein Tipp nebenbei:
Enums wie "NetworkInterfaceType" kann und sollte man direkt vergleichen. Den Umweg über "ToString()" kannst du dir sparen:
Code:
if (n.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { ... }
Analog auch in Zeile 35, 44 und 51.

Das ist typsicher und sogar ein klein wenig performanter.
 
Zurück
Oben