Jump to content

This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies. Find out more here. X
X


Photo

SOLVED: Rename a network adapter WITHOUT netsh?


  • Please log in to reply
6 replies to this topic

#1 ModemJunki

ModemJunki

    Wayfarer

  • Active Members
  • Pip
  • 82 posts

Posted 28 April 2012 - 05:02 AM

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, 07 June 2012 - 07:11 PM.








#2 guinness

guinness

    all-consuming swarm in inconspicuous disguise

  • Developers
  • 16,915 posts

Posted 28 April 2012 - 06:24 AM

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.

Example List: _AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_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()CodingDirToHTML5FileInstallrGeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()LockFile()Mapping CtrlIDsParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...
Updated: 30/07/2014


#3 ModemJunki

ModemJunki

    Wayfarer

  • Active Members
  • Pip
  • 82 posts

Posted 01 May 2012 - 12:02 AM

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® 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


#4 ModemJunki

ModemJunki

    Wayfarer

  • Active Members
  • Pip
  • 82 posts

Posted 07 June 2012 - 06:18 PM

Anybody?

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

#5 ModemJunki

ModemJunki

    Wayfarer

  • Active Members
  • Pip
  • 82 posts

Posted 07 June 2012 - 07:01 PM

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:

Plain Text         
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


#6 BrewManNH

BrewManNH

    באָבקעס מיט קודוצ׳ה

  • MVPs
  • 10,044 posts

Posted 07 June 2012 - 07:18 PM

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.

AutoIt         
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

  • ModemJunki 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 an XP machine, 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!

 

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 editorGUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.
GUIToolTip UDF Demo - Demo script to show how to use the GUIToolTip UDF to create and use customized tooltips. Latin Square password generator

 

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.


#7 ModemJunki

ModemJunki

    Wayfarer

  • Active Members
  • Pip
  • 82 posts

Posted 07 June 2012 - 11:08 PM

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?




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users