Что нового

Определение названия сетевого подключения.

rafzak

Новичок
Сообщения
27
Репутация
1
Версия AutoIt: v3.3.8.1

Описание: Подскажите пожалуйста, как реализовать следующее действие:
Нужно найти, в какой сетевой адаптер подключен кабель, считать название сетевого подключения, присвоить название строковой переменной.

Для чего это мне надо?

Есть компы, которые подключаются к сетке. У них бывает: ОС с разными языками либо несколько адаптеров, соответственно, имя сетевого подключения не всегда "Подключение по локальной сети"
Задача, прописать на компы статику и проксю (батник для этого уже сделал)
Спасибо.

Примечания:
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Есть два способа:
1:
Код:
$objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2')
$conitems = $objWMIService.ExecQuery ('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
If IsObj($conitems) Then
  For $objitem In $conitems
    If $objitem.netconnectionstatus = 2 Then
      $Names=$objitem.netconnectionid
      ConsoleWrite($Names&@LF)
    EndIf
  Next
EndIf

И второй:
Код:
$shellApp = ObjCreate("shell.application")
$oNetConnections = $shellApp.Namespace(0x00000031)
For $folderitem in $oNetConnections.items
	ConsoleWrite($folderitem.name&@CRLF)
Next
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
rafzak
И ещё такой вариант:

Код:
; НАЧАЛО

 $KEY1='HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}'
 $KEY2='HKLM\SYSTEM\CurrentControlSet\Services'

 $COUNT=1

 While True
  $R=RegEnumKey($KEY1,$COUNT)
  If $R='' Then ExitLoop
  $N=RegRead($KEY1&'\'&$R&'\Connection','Name')
  $COUNT+=1
  $P=RegRead($KEY2&'\'&$R&'\Parameters\Tcpip','DhcpIPAddress')
  If $P<>'' Then MsgBox(0,'',$N)
 WEnd

; КОНЕЦ
 
Автор
R

rafzak

Новичок
Сообщения
27
Репутация
1
Подскажите как в этот скрипт
Код:
$objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2')
$conitems = $objWMIService.ExecQuery ('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
If IsObj($conitems) Then
  For $objitem In $conitems
    If $objitem.netconnectionstatus = 2 Then
      $Names=$objitem.netconnectionid
      MsgBox(0,'',$Names,3)
    EndIf
  Next
EndIf

дописать следующую логику
Код:
If нет подключений Then
MsgBox(0,'',"НЕ подключен сетевой кабель - подключите")
ждем пока подключат и повторяем цикл снова
EndIf
If более 1 подключения Then
MsgBox(0,'',"Подключено более 1 сетевого кабеля - отключите лишние")
ждем пока отключат и повторяем цикл снова
EndIf

Спасибо
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Возможно так, но могу ошибаться:
Код:
$n = 0
$Names = ""

While $n = 0
   Sleep(1000)
   TestNet()
   Select
	  Case $n = 0
		 If MsgBox(1+48, "Внимание", "НЕ подключен сетевой кабель - подключите") = 2 Then Exit
	  Case $n > 1
		 If MsgBox(1+48, "Внимание", "Подключено более 1 сетевого кабеля - отключите лишние") = 2 Then Exit
	  Case Else
		 MsgBox(0, "Net", $Names)
		 Exit
   EndSelect
WEnd

Func TestNet()
   $objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2')
   $conitems = $objWMIService.ExecQuery ('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
   If IsObj($conitems) Then
	  For $objitem In $conitems	  
		 If $objitem.netconnectionstatus = 2 Then
			$Names=$objitem.netconnectionid
			$n += 1	 
		 EndIf	  
	  Next   
   EndIf   
EndFunc
 
Верх