andisu
Goto Top

Wlan per Script deaktivieren wenn LAN Kabel eingesteckt ist.

Wichtig!!

Hallo,
ich möchte das mein WLAN in der Netzwerkübersicht deaktiviert wird sobald ein LAN Kabel eingesteckt ist und das ganze automatisch.
Hat jemand schon so etwas per Script oder anders eingerichtet??

Content-Key: 158064

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

Printed on: April 16, 2024 at 21:04 o'clock

Member: LordGurke
LordGurke Jan 05, 2011 at 16:48:32 (UTC)
Goto Top
Schau mal ins BIOS - bei einigen Notebooks lässt sich das dort einstellen.
Member: AndiSu
AndiSu Jan 05, 2011 at 18:26:54 (UTC)
Goto Top
Danke das habe ich gefunden. Dennoch haben manche Notebook diese funktion nicht im Bios.
Habt ihr sonst noch eine Lösung?
Member: Friemler
Friemler Jan 05, 2011 at 23:28:11 (UTC)
Goto Top
Hallo AndiSu,

bei Windows Vista/7 gibt es die Möglichkeit, über die Aufgabenplanung einen Task bei Eintritt eines Ereignisses zu starten. Wenn Du eines dieser Systeme nutzt, kann Dir geholfen werden.

[EDIT 11.01.2010]
Falls hier nochmal jemand vorbeikommt, soll er wenigstens eine Lösung vorfinden, auch wenn es den TO anscheinend nicht mehr interessiert.

Die Lösung funktioniert aber doch nicht mit Hilfe der Aufgabenplanung von Windows 7, sondern über ein WMI-Skript in VBS und mit Hilfe von DEVCON, dem Gerätemanager für die Kommandozeile von Microsoft, erhältlich hier, für 32Bit und 64Bit. Das bedeutet, die Lösung lässt sich auch auf XP verwenden. Das DEVCON-Paket von Microsoft funktioniert bei mir auch unter Windows 7 Ultimate 32Bit einwandfrei.

Damit das ganze funktioniert, muss DEVCON im Verzeichnis C:\Windows\System32 abgespeichert werden. Zusätzlich müssen am Anfang des Skrpits die Variablen strMonitoredNIC (für die Netzwerkkarte) und strWLANAdapter (für den zu deaktivierenden WLAN-Adapter) angepasst werden. Die Namen der Netzwerkadapter kann man im "Verzeichnis" Netzwerkverbindungen unter den Icons der Adapter ablesen. Wer DEVCON nicht im System32-Verzeichnis abspeichern will, muss noch die Konstante DEVCON_PATH anpassen.

Das Skript holt sich zuerst über eine WMI-Abfrage die Hardware-ID des WLAN-Adapters (wird für den DEVCON-Aufruf benötigt) und beauftragt dann WMI mit der Erstellung eines Event-Objekts, das danach in der Endlos-WHILE-Schleife zyklisch abgefragt wird. Wenn der Netzwerkadapter online geht, wird über DEVCON der WLAN-Adapter deaktiviert. Wenn der Netzwerkadapter wieder offline geht, wird WLAN wieder aktiviert. Unter Vista und Win7 kommt natürlich zuerst eine UAC-Abfrage, ob DEVCON Änderungen am Computer vornehmen darf, die man abnicken muss.
strMonitoredNIC = "VIA Rhine II Fast Ethernet Adapter"  
strWLANAdapter = "Gigaset USB Stick 54"  

Const DEVCON_PATH ="""C:\Windows\System32\Devcon.exe"""  


' Für XP SP2, SP1 und ohne SP  
' Const LAN_CONNECTED = 9  

' Ab XP SP3 und neuer  
Const LAN_CONNECTED = 2

Const LAN_DISCONNECTED = 7
Const MINIMIZED = 7
WAIT = TRUE


strComputer = "."  
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  

Set colNetworkAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE Name='" & strWLANAdapter & "'")  

For Each objNIC in colNetworkAdapters
  strWLANOn = DEVCON_PATH & " enable ""@" & objNIC.PNPDeviceID & """"   
  strWLANOff = DEVCON_PATH & " disable ""@" & objNIC.PNPDeviceID & """"   
Next

Set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE "_  
                                                             & "Targetinstance ISA 'Win32_NetworkAdapter' AND "_  
                                                             & "TargetInstance.Name='" & strMonitoredNIC & "'")  

Set WshShell = WScript.CreateObject("WScript.Shell")  

Do While TRUE
  Set objEventObject = colMonitoredEvents.NextEvent()

  If objEventObject.Path_.Class = "__InstanceModificationEvent" Then  
    Select Case objEventObject.TargetInstance.NetConnectionStatus
      Case LAN_CONNECTED
        WshShell.Run strWLANOff, MINIMIZED, WAIT

      Case LAN_DISCONNECTED
        WshShell.Run strWLANOn, MINIMIZED, WAIT
    End Select
  End If
Loop

Wenn man das Skript als MonitorNIC.vbs abspeichert, wird das ganze mit folgender Eingabe gestartet (auf der Kommandozeile oder über Start->Ausführen):
cscript /nologo "[[Laufwerk:]\Pfad\]MonitorNIC.vbs"
Es läuft dann die ganze Zeit ein Konsolenfenster, das NICHT geschlossen werden darf, höchstens minimiert. Wer will, kann den Aufruf ja in ein Batchfile packen und vorher noch eine Zeile mit einem Aufruf von CMDOW einfügen,
@echo off
"[[Laufwerk:]\Pfad\]cmdow.exe" @ /hid  
cscript /nologo "[[Laufwerk:]\Pfad\]MonitorNIC.vbs"  
mit dem sich das Fenster verstecken lässt, sodass es auch nicht mehr in der Taskleiste auftaucht.

PS:
Statt DEVCON einen Aufruf von NETSH (in Windows enthalten) zu benutzen, ist erst mit Windows 7 (evtl. auch Vista?) möglich, da sich unter XP mit NETSH nur WAN-Interfaces aktivieren/deaktivieren lassen


Gruß
Friemler
Member: AndiSu
AndiSu Jan 13, 2011 at 12:27:44 (UTC)
Goto Top
Danke fuer die Antwort. Werden das mal versuchen.