Есть ли способ автоматического включения / выключения режима полета в Windows 8.1, когда кабель Ethernet подключен / отключен?

Согласно этому вопросу SU, Windows должна нормально работать с обоими подключенными соединениями, но это не всегда так, кроме того, проводное соединение быстрее.

Аналогичный, но другой вопрос был задан для Windows 7, и инструкции для этого работают аналогично в Windows 8.1, но на моем компьютере уже было настроено предпочесть Ethernet поверх WiFi, так что это не решает меня ,

1 ответ1

1

Для этого нет встроенной функции, но вы можете достичь желаемого с помощью сценария AutoIT с помощью WMI.

Взгляните на этот скрипт , написанный Neutro с AutoIT Forum, чтобы определить текущее активное сетевое соединение и изменить его настройки DNS:

#requireadmin
#include <Array.au3>

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$query = ""

Local $active_netword_cards[1]
Local $network_cards_to_setup[1]

$active_netword_cards[0]=""
$network_cards_to_setup[0]=""

;getting a list of all network cards
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) then
   For $objItem In $colItems
      if $objItem.NetConnectionStatus == "2" OR $objItem.NetConnectionStatus == "9" Then ;if the network connection is active, we add the index of the network card and the connection name to $active_netword_cards array
         _arrayAdd($active_netword_cards, $objItem.Index)
         _arrayAdd($active_netword_cards, $objItem.NetConnectionID)
      endif
   Next
Endif

;getting settings from all network cards in the array $active_netword_cards
for $i = 1 to UBound($active_netword_cards) - 1 step 2
   $query = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index = " & $active_netword_cards[$i], "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

   For $objItem In $query
   if $objItem.DHCPEnabled == "False" Then _arrayAdd($network_cards_to_setup, $active_netword_cards[$i+1]) ;if DHCP is disabled, we add the network card name in the $network_cards_to_setup array
   next
Next

;setting up primary DNS server of all network cards in the $network_cards_to_setup array
;DNS server used in this example is 10.10.2.45

for $i = 1 to UBound($network_cards_to_setup) - 1 step 1
   Runwait('netsh interface IP ADD DNS "'& $network_cards_to_setup[$i] &'" 10.10.2.45 index=1')
Next

Вы можете изменить сценарий так, чтобы он зацикливался с заранее заданными интервалами, и всякий раз, когда в $active_netword_cards обнаруживается соединение Ethernet, вы можете запустить эту команду PowerShell из сценария AutoIT.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .