104596
Goto Top

Wie kann man in C Sharp Netzwerkadapter deaktivieren?

Salvete!

Ich möchte mit C# Wlan aktivieren oder deaktivieren, je nachdem ob ein Lankabel aus- oder eingesteckt wird.
Das Programm steht soweit, allerdings hängt es noch an der Funktion, welche mir Wlan entsprechend enabled oder disabled.

Hier der Sourcecode, am Ende findet ihr die Funktion:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.Management;

namespace Examples.Net.AddressChanges
{
public class NetworkingExample
{
public static void Main()
{
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)
{

if (n.Name == ("Local Area Connection"))

{
if (n.Speed == 0)
{A
Console.WriteLine("Disable");
disable WLAN
networktest (n.name, Disable)

}
else
{
Console.WriteLine("Enable");
Enable WLAN
networktest();
}
}
}
}

function Enable or Disable Wlan ------------hier hängt es anscheinend
public void networktest()
{
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter" +
" WHERE Name= n.name");

ManagementObjectCollection adapterObjects = searcher.Get();

foreach (ManagementObject adapterObject in adapterObjects)
{
string name = adapterObject["Name"].ToString();


}
}


}
}


Weiß jemand ob die Funktion an sich die richtige ist?
Oder wo der Fehler liegt?


Danke und Gruß,


alcapone991

Content-ID: 180437

Url: https://administrator.de/contentid/180437

Ausgedruckt am: 05.11.2024 um 00:11 Uhr

vorstieg
vorstieg 13.02.2012 um 11:39:06 Uhr
Goto Top
Hi,

kenne mich mit der Thematik nicht aus, aber vielleicht hilft dir das weiter:
http://www.codeproject.com/Articles/21503/Hardware-Helper-Library-for-C

mfg vorstieg
104596
104596 13.02.2012 um 12:35:28 Uhr
Goto Top
Danke für die schnelle Antwort, aber das funktioniert leider auch nicht.
Das Programm an sich funktioniert zwar, aber die Datei, in der die Befehle drinstehen, ist defekt.

Die Idee hatte ich vor 2 Wochen auch schon ;)

LG
104596
104596 15.02.2012 um 14:01:49 Uhr
Goto Top
Hallo,


ich habe mittlerweile eine Lösung gefunden. Ist zwar nicht der programmiertechnisch schönste Entwurf, funktionier aber, und das ist ja die Hauptsache face-wink.
Falls es noch jemand sucht, hier bitteschön:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.Management;

namespace Examples.Net.AddressChanges
{
public class NetworkingExample
{
public static void Main()
{
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)
{
if (n.Name == ("Local Area Connection"))

{
if (n.Speed == 0)
{
Console.WriteLine("Enable");
enable WLAN
Wireless Network Connection
WlanAction1();
}
else
{
Console.WriteLine("Disable");
Disable WLAN
WlanAction();
}
}
}
}


function Disable Wlan

public static void WlanAction()
{
Console.WriteLine("Disable Function");
SelectQuery wmiQuery = new SelectQuery("SELECT * FROM Win32_NetworkAdapter");
WHERE Name = 'Wireless Network Connection'"
ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(wmiQuery);
foreach (ManagementObject item in searchProcedure.Get())
{

if (((string)item["NetConnectionID"]) == "Wireless Network Connection")
NEtConnection Status = 2 for Active, 7 for LAN not connected
{
item.InvokeMethod("disable",null);
item.Put();
Console.WriteLine(item["name"]);
}
}
}

//function Enable Wlan
public static void WlanAction1()
{
SelectQuery wmiQuery = new SelectQuery("SELECT * FROM Win32_NetworkAdapter");
ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(wmiQuery);
foreach (ManagementObject item in searchProcedure.Get())
{
if (((string)item["NetConnectionID"]) == "Wireless Network Connection")

{
item.InvokeMethod("Enable", null);
}
}
}
}
}
104596
104596 16.03.2012 um 10:34:22 Uhr
Goto Top
...ein Problem habe ich allerdings noch.

Das ganze funktioniert nur wenn ich die UAC - User Account Control deaktiviert habe.
Weiß jemand wie ich das umgehen könnte? Die UAC muss nämlich angeschaltet sein bei unseren Rechnern.

Außerdem funktioniert der Dienst noch nicht wenn ich den Laptop anschalte und LAN sowie WLAN aktiviert sind. Ich muss immer erst eine Aktion ausführen damit der Dienst entsprechend arbeitet.