Войти

Показать полную графическую версию : Отключение и подключение интернет соединения


Страниц : 1 [2]

Iska
07-06-2018, 17:02
Sisin, а если тогда вот так — просто временно, на время работы Setup.exe, создавать пару правил для фаерволла:
Option Explicit

Const strSourceFileName = "Setup.exe"

Const NET_FW_IP_PROTOCOL_ANY = 256

Const NET_FW_RULE_DIR_IN = 1
Const NET_FW_RULE_DIR_OUT = 2

Const NET_FW_ACTION_BLOCK = 0


Dim strSourceFile

Dim objNetFwPolicy2
Dim objNetFwRule2


With WScript.CreateObject("Scripting.FileSystemObject")
strSourceFile = .BuildPath(.GetParentFolderName(WScript.ScriptFullName), strSourceFileName)

If Not .FileExists(strSourceFile) Then
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If
End With


Set objNetFwPolicy2 = WScript.CreateObject("HNetCfg.FwPolicy2")

For Each objNetFwRule2 In objNetFwPolicy2.Rules
If StrComp(objNetFwRule2.ApplicationName, strSourceFile, vbTextCompare) = 0 Then
objNetFwPolicy2.Rules.Remove objNetFwRule2.Name
End If
Next

Set objNetFwRule2 = WScript.CreateObject("HNetCfg.FWRule")

With objNetFwRule2
.Name = "My Installer"
.Description = "Disallow My Installer network traffic"
.ApplicationName = strSourceFile
.Protocol = NET_FW_IP_PROTOCOL_ANY
.Profiles = objNetFwPolicy2.CurrentProfileTypes
.Direction = NET_FW_RULE_DIR_IN
.Action = NET_FW_ACTION_BLOCK

.Enabled = True
End With

objNetFwPolicy2.Rules.Add objNetFwRule2

Set objNetFwRule2 = Nothing

Set objNetFwRule2 = WScript.CreateObject("HNetCfg.FWRule")

With objNetFwRule2
.Name = "My Installer"
.Description = "Disallow My Installer network traffic"
.ApplicationName = strSourceFile
.Protocol = NET_FW_IP_PROTOCOL_ANY
.Profiles = objNetFwPolicy2.CurrentProfileTypes
.Direction = NET_FW_RULE_DIR_OUT
.Action = NET_FW_ACTION_BLOCK

.Enabled = True
End With

objNetFwPolicy2.Rules.Add objNetFwRule2

Set objNetFwRule2 = Nothing

WScript.CreateObject("WScript.Shell").Run """" & strSourceFile & """", 1, True

For Each objNetFwRule2 In objNetFwPolicy2.Rules
If StrComp(objNetFwRule2.ApplicationName, strSourceFile, vbTextCompare) = 0 Then
objNetFwPolicy2.Rules.Remove objNetFwRule2.Name
End If
Next

WScript.Quit 0
?!

Кривовастенько, конечно, да…

YuS_2
07-06-2018, 20:03
а как тогда сделать батник, который бы отключал инет на любом компьютере, запускал приложение и через 10 секунд включал??? »
Опять же, фантазия должна помочь, а инструменты вроде выше опубликованы уже... :)
@echo off
setlocal enabledelayedexpansion
set i=0
set n=1

set m=20 &: Предполагаемое число адаптеров

rem Собственно, создаем массив:
for /f "delims=" %%a in ('
wmic path win32_networkadapter where physicaladapter^=true get ^
netenabled^,deviceid^,name /value^|findstr /i "deviceid netenabled name"
') do set /a i+=1&set "var!n!%%a"&if !i! equ 3 (set/a i=0&set/a n+=1)

rem Выключаем адаптер, если включен:
for /l %%i in (1,1,%m%) do (
if defined var%%iDeviceID (
call set "tmp=%%var%%iNetEnabled%%"
call set "ID=%%var%%iDeviceID%%"
if "!tmp!"=="TRUE" (
wmic path win32_networkadapter where deviceid=!ID! call disable
)
)
)

echo А здесь запускаем приложение.........
echo Только надо не забыть указать абсолютный путь к нему, либо
echo переход в каталог где хранится это приложение
rem Setup.exe

timeout /t 10

rem Восстанавливаем предыдущее состояние изначально включенных адаптеров
for /l %%i in (1,1,%m%) do (
if defined var%%iDeviceID (
call set "tmp=%%var%%iNetEnabled%%"
call set "ID=%%var%%iDeviceID%%"
if "!tmp!"=="TRUE" (
wmic path win32_networkadapter where deviceid=!ID! call enable
)
)
)
endlocal
pause&exit /b

Sisin
08-06-2018, 10:46
Опять же, фантазия должна помочь, а инструменты вроде выше опубликованы уже... »
YuS_2, я правильно понимаю, что такой батник отключит все адаптеры (если их не больше 20), а потом восстановит состояние как было? Выключенные изначально адаптеры остануться выключенными??

YuS_2
08-06-2018, 14:05
правильно понимаю, что такой батник отключит все адаптеры (если их не больше 20), а потом восстановит состояние как было? »
Да. Но не все, а только physicaladapter=true
Надо просто запустить пакетник не от имени администратора, тогда вывод команд покажет какие адаптеры будут отключаться и включаться, но фактически ничего происходить не будет...
Чтобы всё сработало, сценарий необходимо запустить от имени администратора.




© OSzone.net 2001-2012