ModemJunki Posted April 28, 2012 Share Posted April 28, 2012 (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 June 7, 2012 by ModemJunki Always carry a towel. Link to comment Share on other sites More sharing options...
guinness Posted April 28, 2012 Share Posted April 28, 2012 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() • _ArrayFilter/_ArrayReduce • _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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
ModemJunki Posted May 1, 2012 Author Share Posted May 1, 2012 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 Always carry a towel. Link to comment Share on other sites More sharing options...
ModemJunki Posted June 7, 2012 Author Share Posted June 7, 2012 Anybody? I'm only missing the method to "put" the new name in place - any hint is appreciated. :-) Always carry a towel. Link to comment Share on other sites More sharing options...
ModemJunki Posted June 7, 2012 Author Share Posted June 7, 2012 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 Always carry a towel. Link to comment Share on other sites More sharing options...
BrewManNH Posted June 7, 2012 Share Posted June 7, 2012 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 ModemJunki 1 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 GudeHow 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 Link to comment Share on other sites More sharing options...
ModemJunki Posted June 7, 2012 Author Share Posted June 7, 2012 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? Always carry a towel. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now