1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| Const HKEY_LOCAL_MACHINE = &H80000002
Set objShell = CreateObject("WScript.Shell")
Set objWMIService_wmi = GetObject("winmgmts:\\.\root\wmi")
Set colMonitoredEvents = objWMIService_wmi.ExecNotificationQuery("Select * from MSNdis_StatusMediaConnect")
Do While True
Set strLatestEvent = colMonitoredEvents.NextEvent
Wscript.Echo "A network connection has been disconnected: " & strLatestEvent.InstanceName
nicdesc = strLatestEvent.InstanceName
Set objWMIService_cimv2 = GetObject("winmgmts:\\.\root\cimv2")
Set colNics = objWMIService_cimv2.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where ipEnabled = True")
'Determine nic which trggered the event
For Each objItem in colNics
If objItem.description = nicdesc & " - Miniport d'ordonnancement de paquets" then
trig_macaddress = objItem.MacAddress
trig_nicguid = objItem.SettingID
trig_strKeyPath = "HKLM\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\" & trig_nicguid & "\Connection\MediaSubType"
trig_subtype = objShell.RegRead(trig_strKeyPath)
Exit For
End If
Next
'If the nic was wired then find wireless nics and disable them
If trig_subtype = 1 then
For Each objItem in colNics
nicguid = objItem.SettingID
strKeyPath = "HKLM\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\" & nicguid & "\Connection\MediaSubType"
subtype = ""
on error resume next
subtype = objShell.RegRead(strKeyPath)
If err.number <> 0 then
subtype = 0
err.clear
on error goto 0
End If
If (subtype = 2) then
wireless_macaddress = objItem.MacAddress
set colAdapters = objWMIService_cimv2.Execquery("Select * from Win32_NetworkAdapter where macaddress ='" & wireless_macaddress & "'")
For Each Adapter in colAdapters
constatus = Adapter.NetConnectionStatus
If constatus <> "" then
wscript.echo SetConnState(Adapter.NetConnectionID,0)
End If
Next
End If
Next
End If
Loop
Function SetConnState(strConn,constate)
Const CONTROL_PANEL = &H3&
Set objShell = CreateObject("Shell.Application")
Set objCP = objShell.Namespace(CONTROL_PANEL)
If connstate = 0 then connAction = "Disa&ble"
If connstate = 1 then connAction = "En&able"
Set colNetwork = Nothing
For Each clsConn in objCP.Items
If clsConn.Name = "Connexions réseau" Then
Set colNetwork = clsConn.getfolder
Exit For
End If
Next
If colNetwork is Nothing Then
WScript.Echo "Network folder not found"
SetConnState = False
Exit Function
End If
Set clsLANConn = Nothing
For Each clsConn in colNetwork.Items
If Instr(LCase(clsConn.name),LCase(strConn)) Then
Set clsLANConn = clsConn
Exit For
End If
Next
If clsLANConn is Nothing Then
WScript.Echo "Network Connection not found"
SetConnState = False
Exit Function
End If
bEnabled = True
Set objEnable = Nothing
Set objDisable = Nothing
For Each clsVerb in clsLANConn.verbs
If clsVerb.name = connAction Then
Set objAction = clsVerb
End If
Next
wscript.echo REPLACE(connAction,"&","") & " " & strConn & "..."
objAction.DoIt
End Function |
Partager