Sign in to follow this  
Followers 0

Toggle Local Area Connection (XP)

24 posts in this topic

#1 ·  Posted (edited)

This is my first script made in AutoIt, I hope someone will find it useful.

I put it together after viewing and trying a lot of example scripts made by users of this forum. A big thanks to everyone who's functions I used.

Description:

When you run this script, it will first check current state of Local Area Connection (enabled/disabled), if it's enabled then it will disable it and vice versa.

It will also modify firewall settings (when lan is enabled - firewall is set to off; when lan is disabled - firewall is set to on and no exceptions).

The name of the connection in your Network Connections must be exactly "Local Area Connection" if you want it to work.

Tested on Windows XP Home.

The description, important notes, instructions on how to use this script / application and download links can be found here.

Playlet

Edited by playlet

Share this post


Link to post
Share on other sites



#2 ·  Posted

Would like to see the source, if you don't mind sharing.

Share this post


Link to post
Share on other sites

#4 ·  Posted

I updated the source code above - removed some unnecessary lines from the code.

Cheers, Playlet

How about before checking the status is 'enable or disable', the script should also check if the computer has the LAN adapter or not? Because I have a old notebook without LAN adapter.

Share this post


Link to post
Share on other sites

#5 ·  Posted

This could be a little tricky since I don't know what actually happens with the script on a computer that doesn't have a lan adapter.

Try this:

Dim $aNetworkInfo
$cI_CompName = @ComputerName
Global    $wbemFlagReturnImmediately = 0x10, _
        $wbemFlagForwardOnly = 0x20
_ComputerGetNetworkCards($aNetworkInfo)
$networkcard = $aNetworkInfo[1][0]

If $networkcard <> "" Then
    MsgBox (0, "True", "You have a network card installed: " & @CRLF & @CRLF & $networkcard)
Else
    MsgBox (0, "False", "No network cards !")
EndIf

Func _ComputerGetNetworkCards(ByRef $aNetworkInfo)
    Local $colItems, $objWMIService, $objItem
    Dim $aNetworkInfo[1][34], $i = 1

    $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    If IsObj($colItems) Then
        For $objItem In $colItems
            ReDim $aNetworkInfo[UBound($aNetworkInfo) + 1][34]
            $aNetworkInfo[$i][0]  = $objItem.Name
            $i += 1
        Next
        $aNetworkInfo[0][0] = UBound($aNetworkInfo) - 1
        If $aNetworkInfo[0][0] < 1 Then
            SetError(1, 1, 0)
        EndIf
    Else
        SetError(1, 2, 0)
    EndIf
EndFunc
and tell me what the MessageBox tells you.

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

This could be a little tricky since I don't know what actually happens with the script on a computer that doesn't have a lan adapter.

Try this:

Dim $aNetworkInfo
$cI_CompName = @ComputerName
Global    $wbemFlagReturnImmediately = 0x10, _
        $wbemFlagForwardOnly = 0x20
_ComputerGetNetworkCards($aNetworkInfo)
$networkcard = $aNetworkInfo[1][0]

If $networkcard <> "" Then
    MsgBox (0, "True", "You have a network card installed: " & @CRLF & @CRLF & $networkcard)
Else
    MsgBox (0, "False", "No network cards !")
EndIf

Func _ComputerGetNetworkCards(ByRef $aNetworkInfo)
    Local $colItems, $objWMIService, $objItem
    Dim $aNetworkInfo[1][34], $i = 1

    $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    If IsObj($colItems) Then
        For $objItem In $colItems
            ReDim $aNetworkInfo[UBound($aNetworkInfo) + 1][34]
            $aNetworkInfo[$i][0]  = $objItem.Name
            $i += 1
        Next
        $aNetworkInfo[0][0] = UBound($aNetworkInfo) - 1
        If $aNetworkInfo[0][0] < 1 Then
            SetError(1, 1, 0)
        EndIf
    Else
        SetError(1, 2, 0)
    EndIf
EndFunc
and tell me what the MessageBox tells you.

"True"

"You have a network card installed:

RAS Asynchronization adaptor"

Actually it is not LAN adapter, this is a modem adapter.

Edited by mrmacadamia

Share this post


Link to post
Share on other sites

#7 ·  Posted

OK, I've changed this function to look for specific words like "lan" or "ethernet". I think it should work now. If all goes well, I'll add it to the script.

Here's the code:

Dim $aNetworkInfo
$cI_CompName = @ComputerName
Global    $wbemFlagReturnImmediately = 0x10, _
        $wbemFlagForwardOnly = 0x20
$lan = 0
_ComputerGetNetworkCards($aNetworkInfo)
$networkcard = $aNetworkInfo[0][0]

For $i = 1 to $aNetworkInfo[0][0]
    $networkcard = $aNetworkInfo[$i][0]
    If StringInStr ($networkcard, "LAN") Or StringInStr ($networkcard, "Ethernet") Then
        $lan = 1
        MsgBox (0, "", $networkcard)
    EndIf
Next

If $lan = 1 Then
    MsgBox (0, "True", "Yes, You have a network card installed !")
ElseIf $lan = 0 Then
    MsgBox (0, "False", "No, No network cards installed !")
EndIf

;===============================================================================
; Description:      Returns the Network information in an array.
; Author:            Jarvis J. Stubblefield (JSThePatriot) [url="http://www.vortexrevolutions.com/"]http://www.vortexrevolutions.com/[/url]
; Parameter(s):     $aNetworkInfo - By Reference - Network Information array.
; Requirement(s):   None
; Return Value(s):  On Success - Returns array of Network Information.
;                        $aNetworkInfo[0][0]   = Number of Network Cards
;                        $aNetworkInfo[$i][0]  = Name ($i starts at 1)
;                        $aNetworkInfo[$i][1]  = Adapter Type
;                        $aNetworkInfo[$i][2]  = Adapter Type ID
;                        $aNetworkInfo[$i][3]  = Auto Sense
;                        $aNetworkInfo[$i][4]  = Description
;                        $aNetworkInfo[$i][5]  = Availability
;                        $aNetworkInfo[$i][6]  = Config Manager Error Code
;                        $aNetworkInfo[$i][7]  = Config Manager User Config
;                        $aNetworkInfo[$i][8]  = Creation Class Name
;                        $aNetworkInfo[$i][9]  = Device ID
;                        $aNetworkInfo[$i][10] = Error Cleared
;                        $aNetworkInfo[$i][11] = Error Description
;                        $aNetworkInfo[$i][12] = Index
;                        $aNetworkInfo[$i][13] = Installed
;                        $aNetworkInfo[$i][14] = Last Error Code
;                        $aNetworkInfo[$i][15] = MAC Address
;                        $aNetworkInfo[$i][16] = Manufacturer
;                        $aNetworkInfo[$i][17] = Max Number Controlled
;                        $aNetworkInfo[$i][18] = Max Speed
;                        $aNetworkInfo[$i][19] = Net Connection ID
;                        $aNetworkInfo[$i][20] = Net Connection Status
;                        $aNetworkInfo[$i][21] = Network Addresses
;                        $aNetworkInfo[$i][22] = Permanent Address
;                        $aNetworkInfo[$i][23] = PNP Device ID
;                        $aNetworkInfo[$i][24] = Power Management Capabilities
;                        $aNetworkInfo[$i][25] = Power Management Supported
;                        $aNetworkInfo[$i][26] = Product Name
;                        $aNetworkInfo[$i][27] = Service Name
;                        $aNetworkInfo[$i][28] = Speed
;                        $aNetworkInfo[$i][29] = Status
;                        $aNetworkInfo[$i][30] = Status Info
;                        $aNetworkInfo[$i][31] = System Creation Class Name
;                        $aNetworkInfo[$i][32] = System Name
;                        $aNetworkInfo[$i][33] = Time Of Last Reset
;                   On Failure - @error = 1 and Returns 0
;                                @extended = 1 - Array contains no information
;                                            2 - $colItems isnt an object
; Author(s):        Jarvis Stubblefield (support "at" vortexrevolutions "dot" com)
; Note(s):
;===============================================================================
Func _ComputerGetNetworkCards(ByRef $aNetworkInfo)
    Local $colItems, $objWMIService, $objItem
    Dim $aNetworkInfo[1][34], $i = 1

    $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    If IsObj($colItems) Then
        For $objItem In $colItems
            ReDim $aNetworkInfo[UBound($aNetworkInfo) + 1][34]
            $aNetworkInfo[$i][0]  = $objItem.Name
            $aNetworkInfo[$i][1]  = $objItem.AdapterType
            $aNetworkInfo[$i][2]  = $objItem.AdapterTypeId
            $aNetworkInfo[$i][3]  = $objItem.AutoSense
            $aNetworkInfo[$i][4]  = $objItem.Description
            $aNetworkInfo[$i][5]  = $objItem.Availability
            $aNetworkInfo[$i][6]  = $objItem.ConfigManagerErrorCode
            $aNetworkInfo[$i][7]  = $objItem.ConfigManagerUserConfig
            $aNetworkInfo[$i][8]  = $objItem.CreationClassName
            $aNetworkInfo[$i][9]  = $objItem.DeviceID
            $aNetworkInfo[$i][10] = $objItem.ErrorCleared
            $aNetworkInfo[$i][11] = $objItem.ErrorDescription
            $aNetworkInfo[$i][12] = $objItem.Index
            $aNetworkInfo[$i][13] = $objItem.Installed
            $aNetworkInfo[$i][14] = $objItem.LastErrorCode
            $aNetworkInfo[$i][15] = $objItem.MACAddress
            $aNetworkInfo[$i][16] = $objItem.Manufacturer
            $aNetworkInfo[$i][17] = $objItem.MaxNumberControlled
            $aNetworkInfo[$i][18] = $objItem.MaxSpeed
            $aNetworkInfo[$i][19] = $objItem.NetConnectionID
            $aNetworkInfo[$i][20] = $objItem.NetConnectionStatus
            $aNetworkInfo[$i][21] = $objItem.NetworkAddresses(0)
            $aNetworkInfo[$i][22] = $objItem.PermanentAddress
            $aNetworkInfo[$i][23] = $objItem.PNPDeviceID
            $aNetworkInfo[$i][24] = $objItem.PowerManagementCapabilities(0)
            $aNetworkInfo[$i][25] = $objItem.PowerManagementSupported
            $aNetworkInfo[$i][26] = $objItem.ProductName
            $aNetworkInfo[$i][27] = $objItem.ServiceName
            $aNetworkInfo[$i][28] = $objItem.Speed
            $aNetworkInfo[$i][29] = $objItem.Status
            $aNetworkInfo[$i][30] = $objItem.StatusInfo
            $aNetworkInfo[$i][31] = $objItem.SystemCreationClassName
            $aNetworkInfo[$i][32] = $objItem.SystemName
            $aNetworkInfo[$i][33] = __StringToDate($objItem.TimeOfLastReset)
            $i += 1
        Next
        $aNetworkInfo[0][0] = UBound($aNetworkInfo) - 1
        If $aNetworkInfo[0][0] < 1 Then
            SetError(1, 1, 0)
        EndIf
    Else
        SetError(1, 2, 0)
    EndIf
EndFunc ;_ComputerGetNetworkCards

Func __StringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
            StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
            & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc ;__StringToDate Function created by SvenP Modified by JSThePatriot

Try this and tell me the result again, please.

Share this post


Link to post
Share on other sites

#8 ·  Posted

...I've changed this function to look for specific words like "lan" or "ethernet"....

You could also try filtering the WMI query to look for network devices that have an IP associated with them.

Share this post


Link to post
Share on other sites

#11 ·  Posted

I found 26 NICs on my system (9 with your filter).

OnBoard Broadcom NetXtreme 57xx Gigabit Controller

Miniport d'ordonnancement de paquets

Miniport d'ordonnancement de paquets

Connexion 1394 Carte réseau 1394

Miniport d'ordonnancement de paquets

Deterministic Network Enhancer Miniport

Deterministic Network Enhancer Miniport

Virtual Machine Network Services Driver

VirtualBox Bridged Networking Driver Miniport

So I modified your code like this :

For $i=1 to $aNetworkInfo[0][0]

If StringInStr($aNetworkInfo[$i][1],'Ethernet')>0 and $aNetworkInfo[$i][19]<>"" and StringInStr($aNetworkInfo[$i][0],"1394")=0 Then

ConsoleWrite($aNetworkInfo[$i][19]&@TAB&$aNetworkInfo[$i][0]&@CR)

$lan = 1

EndIf

Next

Only "Ethernet" Nics, Only visible in "Nework Connections" and not a "1394" adapter.

There is only one NIC left after this filter. The true one.

OnBoard Broadcom NetXtreme 57xx Gigabit Controller

I like the $aNetworkInfo[$i][19] value !!! Every people asking for a NIC called exactly "Local area connection" in their script should use your function !

Thanks for sharing.

Share this post


Link to post
Share on other sites

#12 ·  Posted

I'm glad you like this script. I will try this modification that you posted and probably add it to the first post.

Actually all the credits for _ComputerGetNetworkCards($aNetworkInfo) should go to JSThePatriot. I think he was the one that made it.

Playlet

Share this post


Link to post
Share on other sites

#13 ·  Posted

Here's a modification to look for WLAN also:

Dim $aNetworkInfo
$cI_CompName = @ComputerName
Global  $wbemFlagReturnImmediately = 0x10, _
        $wbemFlagForwardOnly = 0x20
$lan = 0
_ComputerGetNetworkCards($aNetworkInfo)
$networkcard = $aNetworkInfo[0][0]

For $i = 1 to $aNetworkInfo[0][0]
    If StringInStr ($aNetworkInfo[$i][19], "Local Area Connection") And StringInStr ($aNetworkInfo[$i][0], "Ethernet") Then
        ;MsgBox (0, "", $aNetworkInfo[$i][0] & @CRLF & $aNetworkInfo[$i][19])
        $lan = 1
    ElseIf StringInStr ($aNetworkInfo[$i][19], "Wireless Network Connection") And StringInStr ($aNetworkInfo[$i][0], "WLAN") Then
        ;MsgBox (0, "", $aNetworkInfo[$i][0] & @CRLF & $aNetworkInfo[$i][19])
        $lan = 1
    ElseIf StringInStr ($aNetworkInfo[$i][0], "Ethernet") And $aNetworkInfo[$i][19] <> "" And Not StringInStr ($aNetworkInfo[$i][0], "1394") Then
        ;MsgBox (0, "", $aNetworkInfo[$i][0] & @CRLF & $aNetworkInfo[$i][19])
        $lan = 1
    EndIf
Next

If $lan = 1 Then
    MsgBox (0, "True", "Yes, You have a network card installed !")
ElseIf $lan = 0 Then
    MsgBox (0, "False", "No, No network cards installed !")
EndIf

;===============================================================================
; Description:  Returns the Network information in an array.
; Author:           Jarvis J. Stubblefield (JSThePatriot) http://www.vortexrevolutions.com/
; Parameter(s):     $aNetworkInfo - By Reference - Network Information array.
; Requirement(s): None
; Return Value(s): On Success - Returns array of Network Information.
;                       $aNetworkInfo[0][0] = Number of Network Cards
;                       $aNetworkInfo[$i][0] = Name ($i starts at 1)
;                       $aNetworkInfo[$i][1] = Adapter Type
;                       $aNetworkInfo[$i][2] = Adapter Type ID
;                       $aNetworkInfo[$i][3] = Auto Sense
;                       $aNetworkInfo[$i][4] = Description
;                       $aNetworkInfo[$i][5] = Availability
;                       $aNetworkInfo[$i][6] = Config Manager Error Code
;                       $aNetworkInfo[$i][7] = Config Manager User Config
;                       $aNetworkInfo[$i][8] = Creation Class Name
;                       $aNetworkInfo[$i][9] = Device ID
;                       $aNetworkInfo[$i][10] = Error Cleared
;                       $aNetworkInfo[$i][11] = Error Description
;                       $aNetworkInfo[$i][12] = Index
;                       $aNetworkInfo[$i][13] = Installed
;                       $aNetworkInfo[$i][14] = Last Error Code
;                       $aNetworkInfo[$i][15] = MAC Address
;                       $aNetworkInfo[$i][16] = Manufacturer
;                       $aNetworkInfo[$i][17] = Max Number Controlled
;                       $aNetworkInfo[$i][18] = Max Speed
;                       $aNetworkInfo[$i][19] = Net Connection ID
;                       $aNetworkInfo[$i][20] = Net Connection Status
;                       $aNetworkInfo[$i][21] = Network Addresses
;                       $aNetworkInfo[$i][22] = Permanent Address
;                       $aNetworkInfo[$i][23] = PNP Device ID
;                       $aNetworkInfo[$i][24] = Power Management Capabilities
;                       $aNetworkInfo[$i][25] = Power Management Supported
;                       $aNetworkInfo[$i][26] = Product Name
;                       $aNetworkInfo[$i][27] = Service Name
;                       $aNetworkInfo[$i][28] = Speed
;                       $aNetworkInfo[$i][29] = Status
;                       $aNetworkInfo[$i][30] = Status Info
;                       $aNetworkInfo[$i][31] = System Creation Class Name
;                       $aNetworkInfo[$i][32] = System Name
;                       $aNetworkInfo[$i][33] = Time Of Last Reset
;   On Failure - @error = 1 and Returns 0
;                               @extended = 1 - Array contains no information
;                                           2 - $colItems isnt an object
; Author(s):    Jarvis Stubblefield (support "at" vortexrevolutions "dot" com)
; Note(s):
;===============================================================================
Func _ComputerGetNetworkCards(ByRef $aNetworkInfo)
    Local $colItems, $objWMIService, $objItem
    Dim $aNetworkInfo[1][34], $i = 1

    $objWMIService = ObjGet("winmgmts:\\" & $cI_Compname & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    If IsObj($colItems) Then
        For $objItem In $colItems
            ReDim $aNetworkInfo[UBound($aNetworkInfo) + 1][34]
            $aNetworkInfo[$i][0] = $objItem.Name
            $aNetworkInfo[$i][1] = $objItem.AdapterType
            $aNetworkInfo[$i][2] = $objItem.AdapterTypeId
            $aNetworkInfo[$i][3] = $objItem.AutoSense
            $aNetworkInfo[$i][4] = $objItem.Description
            $aNetworkInfo[$i][5] = $objItem.Availability
            $aNetworkInfo[$i][6] = $objItem.ConfigManagerErrorCode
            $aNetworkInfo[$i][7] = $objItem.ConfigManagerUserConfig
            $aNetworkInfo[$i][8] = $objItem.CreationClassName
            $aNetworkInfo[$i][9] = $objItem.DeviceID
            $aNetworkInfo[$i][10] = $objItem.ErrorCleared
            $aNetworkInfo[$i][11] = $objItem.ErrorDescription
            $aNetworkInfo[$i][12] = $objItem.Index
            $aNetworkInfo[$i][13] = $objItem.Installed
            $aNetworkInfo[$i][14] = $objItem.LastErrorCode
            $aNetworkInfo[$i][15] = $objItem.MACAddress
            $aNetworkInfo[$i][16] = $objItem.Manufacturer
            $aNetworkInfo[$i][17] = $objItem.MaxNumberControlled
            $aNetworkInfo[$i][18] = $objItem.MaxSpeed
            $aNetworkInfo[$i][19] = $objItem.NetConnectionID
            $aNetworkInfo[$i][20] = $objItem.NetConnectionStatus
            $aNetworkInfo[$i][21] = $objItem.NetworkAddresses(0)
            $aNetworkInfo[$i][22] = $objItem.PermanentAddress
            $aNetworkInfo[$i][23] = $objItem.PNPDeviceID
            $aNetworkInfo[$i][24] = $objItem.PowerManagementCapabilities(0)
            $aNetworkInfo[$i][25] = $objItem.PowerManagementSupported
            $aNetworkInfo[$i][26] = $objItem.ProductName
            $aNetworkInfo[$i][27] = $objItem.ServiceName
            $aNetworkInfo[$i][28] = $objItem.Speed
            $aNetworkInfo[$i][29] = $objItem.Status
            $aNetworkInfo[$i][30] = $objItem.StatusInfo
            $aNetworkInfo[$i][31] = $objItem.SystemCreationClassName
            $aNetworkInfo[$i][32] = $objItem.SystemName
            $aNetworkInfo[$i][33] = __StringToDate($objItem.TimeOfLastReset)
            $i += 1
        Next
        $aNetworkInfo[0][0] = UBound($aNetworkInfo) - 1
        If $aNetworkInfo[0][0] < 1 Then
            SetError(1, 1, 0)
        EndIf
    Else
        SetError(1, 2, 0)
    EndIf
EndFunc ;_ComputerGetNetworkCards

Func __StringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
            StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
            & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFunc ;__StringToDate Function created by SvenP Modified by JSThePatriot

Share this post


Link to post
Share on other sites

#14 ·  Posted (edited)

Hi, guys!

I've updated this code a bit. (I haven't added LAN adapter check yet.)

Playlet

Edited by playlet

Share this post


Link to post
Share on other sites

#16 ·  Posted

Hi, everyone!

It's been a while since I last worked on this script so I decided to post another update. Go ahead and try it. (Compile it first.)

Playlet

Share this post


Link to post
Share on other sites

#17 ·  Posted

Not working in Windows 7 x64. Is it supposed to?

If I run from Scite:

LAN Enable-Disable v2.3.au3 (75) : ==> Variable must be of type "Object".:

If I compile and run it:

Line 72
Error: Variable must be of type "Object".

Thanks for all your work.

Share this post


Link to post
Share on other sites

#18 ·  Posted

Not working in Windows 7 x64. Is it supposed to?

If I run from Scite:

LAN Enable-Disable v2.3.au3 (75) : ==> Variable must be of type "Object".:

If I compile and run it:

Line 72
Error: Variable must be of type "Object".

Thanks for all your work.

I got the same error, then tried compiling it as 64-bit - fixed the problem for me.

Share this post


Link to post
Share on other sites

#20 ·  Posted

x64 or x86 -- doesn't matter for me. Still getting error.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0