Что нового

Требуется минимальная доработка скрипта для расшаривания интернета в локалку

Bryuhanov

Новичок
Сообщения
1
Репутация
1
Версия AutoIt: 3.
3.3.14
Описание:
Требуется помощь по правке скрипта который должен в свойствах сетевого соединения, должен выставлять галку
на расшаривании доступа в интернет с одного сетевого интерфейса на другой.

Скрипт имеется в наличии, что нужно в нем поправить, для того чтобы он начал работать?
Код скрипта:
Код:
#RequireAdmin

Func EnableDisableICS($sPublicConnectionName,$ssPrivateConnectionName,$bEnable)

    Local  $bFound =False
    Dim $oNetSharingManager, $oConnectionCollection, $oItem, $EveryConnection, $objNCProps
    $oNetSharingManager = ObjCreate("HNetCfg.HNetShare.1")
    $oConnectionCollection = $oNetSharingManager.EnumEveryConnection
    For  $oItem In $oConnectionCollection
        $EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
        $objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
        If $objNCProps.name = $ssPrivateConnectionName Then
            $bFound = True
;~             MsgBox(0,"","Starting Internet Sharing For: " & $objNCProps.name)
            If $bEnable Then
                $EveryConnection.EnableSharing(1)
            Else
                $EveryConnection.DisableSharing()
            EndIf
        EndIf
    Next
    $oConnectionCollection = $oNetSharingManager.EnumEveryConnection
    For  $oItem In $oConnectionCollection
        $EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
        $objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
        If $objNCProps.name = $sPublicConnectionName Then
            $bFound = True
;~             MsgBox(0,"","Internet Sharing Success For: " & $objNCProps.name)
            If $bEnable Then
                $EveryConnection.EnableSharing(0)
            Else
                $EveryConnection.DisableSharing()
            EndIf
        EndIf
    Next
    Return $bFound
EndFunc


MsgBox(0,"",EnableDisableICS("YOUR ACTIVE NETWORK", "OUR ADAPTOR TO SHARE", True))

Примечания:
 

mef-t

Осваивающий
Сообщения
303
Репутация
30
Попробуйте поискать, каким образом это можно сделать через консоль. Уверен что можно.
После этого код можно свести в несколько строк.
 

ra4o

AutoIT Гуру
Сообщения
1 101
Репутация
223
что нужно в нем поправить, для того чтобы он начал работать?
Подставьте названия своих сетей в функцию и всё. Скрипт работает, только что проверил на Windows 7 x64 .
Вот, например, я расшарил интернет с Wi-Fi на сетевую карту:
Код:
MsgBox(0,"",EnableDisableICS("Беспроводное сетевое соединение", "Подключение по локальной сети", True))
 

Astel064

Помог мой пост, ставь +!
Сообщения
271
Репутация
49
Приветствую!
Столкнулся с проблемой: если в системе есть интерфейс "Входящие подключения", то скрипт завершается критической ошибкой Autoit из-за "плохого объекта" на этой строке:
Код:
$EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)

Решение нашел: Перед тем, как выполнить код выше, выполняется проверка интерфейса по "MediaType" (у всех моих подключений MediaType=3, а у "Входящие подключения" MediaType=0).

OffTopic:
Самому недавно понадобился такой скрипт, нашел его здесь (Спасибо Bryuhanov), проверил на рабочем ПК - работал, т.к. не поднимал там "Входящие подключения"; Проверил на домашнем - ошибка. Не сразу понял почему. В общем, публикую переделанный вариант в виде UDF, т.к. я уведен, что он кому-то понадобится!


Код:
#CS
Автор:			Bryuhanov    ( http://autoit-script.ru/index.php?topic=22965.0 )
Редактор:		Astel064		( http://autoit-script.ru/index.php?topic=25200 )
=====================================================================
Функция:			_EnableDisableICS($sPublicConnectionName, $ssPrivateConnectionName, $bEnable)
Описание:		Включает, либо отключает общий доступ к интернету для указанного сетевого подключения
Синтаксис:		_EnableDisableICS($sPublicConnectionName, $ssPrivateConnectionName, $bEnable)
Параметры:
							$sPublicConnectionName = Имя публичного подключения (с доступом к сети Интернет).
							$ssPrivateConnectionName = Имя приватного подключения (которому будет открыт доступ к сети Интернет).
							$bEnable = Если указано 1, то общий доступ будет открыт, иначе, если указано 0 - закрыт.

Возврат:		1=Успех, 0=Ошибка
@Error:			0=Успех, иначе:
		1-7:		Ошибка объекта
		-1, -2:	Не найдено одно (или оба соответственно) сетевое подключение
=====================================================================
#CE



#RequireAdmin

Func _EnableDisableICS($sPublicConnectionName, $ssPrivateConnectionName, $bEnable)
Local $oNetSharingManager, $oConnectionCollection, $oItem, $EveryConnection, $objNCProps, $bFound=0


$oNetSharingManager = ObjCreate("HNetCfg.HNetShare.1")
	If NOT IsObj($oNetSharingManager) Then Return SetError(1,0,0)

$oConnectionCollection = $oNetSharingManager.EnumEveryConnection
	If NOT IsObj($oConnectionCollection) Then Return SetError(2,0,0)


For  $oItem In $oConnectionCollection
	; $oNetSharingManager.NetConnectionProps($oItem).Name
	$objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
		If NOT IsObj($objNCProps) Then Return SetError(4,0,0)
		If $objNCProps.MediaType = 0 Then ContinueLoop
	
;	MsgBox(0, "Ics", "Guid="&$objNCProps.Guid & @CRLF&"Name="&$objNCProps.Name & @CRLF&"DeviceName="&$objNCProps.DeviceName & @CRLF&"Status="&$objNCProps.Status & @CRLF&"MediaType="&$objNCProps.MediaType & @CRLF&"Characteristics="&$objNCProps.Characteristics, 0, 0x000000)

	$EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
		If NOT IsObj($EveryConnection) Then Return SetError(3,0,0)
		
		If $objNCProps.name = $ssPrivateConnectionName Then
		$bFound += 1
;		MsgBox(0,"","Starting Internet Sharing For: " & $objNCProps.name)
			If $bEnable Then
			$EveryConnection.EnableSharing(1)
			Else
			$EveryConnection.DisableSharing()
			EndIf
		EndIf
Next



$oConnectionCollection = $oNetSharingManager.EnumEveryConnection
	If NOT IsObj($oConnectionCollection) Then Return SetError(5,0,0)


For  $oItem In $oConnectionCollection
	$objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
		If NOT IsObj($objNCProps) Then Return SetError(6,0,0)
		If $objNCProps.MediaType = 0 Then ContinueLoop
	
	$EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
		If NOT IsObj($EveryConnection) Then Return SetError(7,0,0)
		
		If $objNCProps.name = $sPublicConnectionName Then
		$bFound += 1
;		MsgBox(0,"","Internet Sharing Success For: " & $objNCProps.name)
			If $bEnable Then
			$EveryConnection.EnableSharing(0)
			Else
			$EveryConnection.DisableSharing()
			EndIf
		EndIf
Next


	If $bFound = 2 Then Return SetError(0,0,1)
	If $bFound = 1 Then Return SetError(-1,0,0)
Return SetError(0,0,-2)
EndFunc









#CS
_EnableDisableICS("D-Link DFE-520TX", "Hostednetwork", 0)
MsgBox(0,"Disable",@Error)

_EnableDisableICS("WLAN", "Hostednetwork", 1)
MsgBox(0,"Enable",@Error)
 #CE
 

Вложения

soles2006

Новичок
Сообщения
1
Репутация
0
как вообще выполняется этот файл со скриптом ?
 
Верх