Sign in to follow this  
Followers 0

SOLVED: Rename a network adapter WITHOUT netsh?

7 posts in this topic

#1 ·  Posted (edited)

SOLVED!

For some various weird reason, we have a system image that won't let us use netsh to rename the NICs.

And I found a vbscript that works, so I started to see if I could figure out how-to do it in pure AutoIT. I was stumped - but a rethink fixed me.

So I removed the original post with VBSCRIPT here and put my solution, hoping it helps someone else down the line. Of course you could make the script accept inputs as variables or what have we.

Global $OldNicName, $NewNicName
;~ Global $OldNicName = "Local Area Connection" ; placeholder
;~ Global $NewNicName = "The LAN" ; placeholder
Global $NewNicName = "Local Area Connection" ; placeholder
Global $OldNicName = "The LAN" ; placeholder

_DoNICName()

Func _DoNICName()
Local $colNICItems, $objWMIService, $objItem
$objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!" & "." & "rootcimv2")
$colNICItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", 0x10 + 0X20)

If IsObj($colNICItems) Then
  For $objItem In $colNICItems
   If StringInStr($objItem.NetConnectionID, $OldNicName) Then
    RunWait(@ComSpec & " /c " & "WMIC NIC where NetConnectionID=""" & $OldNicName & """ set NetConnectionID=""" & $NewNicName & '"', @WindowsDir, @SW_HIDE)
   EndIf
  Next
EndIf
EndFunc   ;==>_DoNICName
Edited by ModemJunki

Share this post


Link to post
Share on other sites



#2 ·  Posted

Search the Forum for Scriptomatic, it allows you to create WMI code easily AND do a search for 'Win32_NetworkAdapter WHERE NetConnectionID' you'll see some examples. Any problems you know where to find us.


UDF List:

 

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

 

 

Updated: 02/04/2015

Share this post


Link to post
Share on other sites

#3 ·  Posted

I think my problem is that I don't understand how to rename the NetConnectionID. I can get a handle on the NIC and it's properties, just not on setting the name in AutoIT. It seems so simple in VB (and I could use the VB, it's only that I want to have all my functions in AutoIT).

I'm not a programmer - just a hack.

Here is what I tried. This is a sample to work on one NIC on my laptop - if I can get this to work, I could make it work on my target systems, where I would match the name (e.g., "Local Area Connection 2" would become "LAN Two" or similar).

Global $NicType1 = "Intel(R) 82579V" ; placeholder string

_DoNICName()

Func _DoNICName()
    Local $colNICItems, $objWMIService, $objItem
    Dim $aNetworkInfo[1][34], $i = 1
    $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2")
    $colNICItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", 0x10 + 0X20)

    If IsObj($colNICItems) Then
        For $objItem In $colNICItems
            If StringInStr($objItem.Name, $NicType1) Then
                $objItem.NetConnectionID='New NIC name'
            EndIf
        Next
    EndIf

EndFunc   ;==>_DoNICName

Share this post


Link to post
Share on other sites

#4 ·  Posted

Anybody?

I'm only missing the method to "put" the new name in place - any hint is appreciated. :-)

Share this post


Link to post
Share on other sites

#5 ·  Posted

Well, it seems all I needed was to rethink it a bit.

It's actually quite simple, use a WMIC command..!

This works for me, maybe it will help someone else:

Global $OldNicName, $NewNicName

Global $OldNicName = "Local Area Connection" ; placeholder
Global $NewNicName = "The LAN" ; placeholder

;~ Global $NewNicName = "Local Area Connection" ; placeholder
;~ Global $OldNicName = "The LAN" ; placeholder


_DoNICName()

Func _DoNICName()
    Local $colNICItems, $objWMIService, $objItem
    $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & "." & "\root\cimv2")
    $colNICItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter", "WQL", 0x10 + 0X20)

    If IsObj($colNICItems) Then
        For $objItem In $colNICItems
            If StringInStr($objItem.NetConnectionID, $OldNicName) Then
                RunWait(@ComSpec & " /c " & "WMIC NIC where NetConnectionID=""" & $OldNicName & """ set NetConnectionID=""" & $NewNicName & '"', @WindowsDir, @SW_HIDE)
            EndIf
        Next
    EndIf
EndFunc   ;==>_DoNICName

Share this post


Link to post
Share on other sites

#6 ·  Posted

Here's an AutoIt only script that I converted from your VBScript, it works on my Windows 7 machine, may need Admin credentials to make it work though.

Global $strComputer = "."
If $CmdLine[0] > 0 Then
 Global $NIC_NEWNAME = $CmdLine[1]
 Global $NIC_OLDNAME = $CmdLine[2]
EndIf
ConsoleWrite("OLDNAME: " & $NIC_OLDNAME & @LF)
ConsoleWrite("NEWNAME: " & $NIC_NEWNAME & @LF)
Global $objWMIService = ObjGet("winmgmts:" & $strComputer & "rootCIMV2")
Global $colItems = $objWMIService.ExecQuery("SELECT * from Win32_NetworkAdapter WHERE NetConnectionID LIKE 'Local Area Connection%'")
For $objItem In $colItems
;~ ' create objects and get items
 Global $objShell = ObjCreate("Shell.Application")
 Global $objFolder = $objShell.Namespace(0x31) ;Control Panel
 Global $objFolderItem = $objFolder.Self
 Global $folder_Object = $objFolderItem.GetFolder
 For $clsConn In $folder_Object.Items
  If StringLower($clsConn.Name) = StringLower($NIC_OLDNAME) Then
   $clsConn.Name = $NIC_NEWNAME
   ConsoleWrite("Renamed to " & $NIC_NEWNAME & @LF)
  EndIf
 Next

Next
1 person likes this

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

#7 ·  Posted

That is superb, thank you!

I'm not familar with creating things like control panel shells etc..

Any books or online reads I should study to grasp more about the topic you could recommend?

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