NutJob Posted October 16, 2007 Share Posted October 16, 2007 As part of a planned rollout for Access Connections 4.42 I need to determine the driver level of the laptop wireless card. AC 4.42 requires a certain driver level (or higher). Does anybody have some code samples to point me in the right direction? TIA! Rob Link to comment Share on other sites More sharing options...
LarryDalooza Posted October 16, 2007 Share Posted October 16, 2007 Will the device be plugged in? makes a diff. Lar. AutoIt has helped make me wealthy Link to comment Share on other sites More sharing options...
LarryDalooza Posted October 16, 2007 Share Posted October 16, 2007 OK, I may not be around to see what you know... but here is what I know... Enumerate through HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI and find a "Driver" value... parse it and find the assoc value at... HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class in the key there you will find... "DriverVersion" Lar. AutoIt has helped make me wealthy Link to comment Share on other sites More sharing options...
NutJob Posted October 16, 2007 Author Share Posted October 16, 2007 The wireless card will be plugged in. Some laptops may not have the radio antenna turned on, but that shouldn't matter (I think). I found a .VBS script that uses WMI that does much of what I need. It actually does more than I need. I have attached it here if anybody want to take a peek at it. I don't know VBS and I 'm having troubles figuring out AutoIT code to do something similar. I don't need to display the result on screen. I would like to insert the card name and driver version number into variables. I had to change the file extention to .txt in order to upload it. But is should be *.vbsWMIGetWirelessDriversVersion.txt Link to comment Share on other sites More sharing options...
LarryDalooza Posted October 17, 2007 Share Posted October 17, 2007 (edited) Are you querying for a specific wireless card? What brand card? This returns all Card Desc with versions... expandcollapse popup$a = GetWirelessDescAndDriverVersions() If @Error Or @Extended Then Exit For $n = 1 to UBound($a) MsgBox(4096,"",$a[0][0] & @LF & $a[0][1] & @LF & $a[0][2]) Next Func GetWirelessDescAndDriverVersions() Local Const $netkey = "HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}" Local Const $keypath = "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}" Local $n = 0,$i = 0,$bPoop = True Local $subkey1,$subkey2 Local $return[1][3], $j=0 While 1 $n+=1 $subkey1 = RegEnumKey($netkey,$n) If @error Then ExitLoop If RegRead($netkey & "\" & $subkey1 & "\Connection","MediaSubType") = 2 Then $bPoop = False $j += 1 Redim $return[$j][3] $return[$j-1][0]= RegRead($netkey & "\" & $subkey1 & "\Connection","Name") $i = 0 While 1 $i += 1 $subkey2 = RegEnumKey($keypath,$i) If @error Then Return SetError(1,0,0) If RegRead($keypath & "\" & $subkey2,"NetCfgInstanceId") = $subkey1 Then $return[$j-1][1] = RegRead($keypath & "\" & $subkey2,"DriverDesc") $return[$j-1][2] = RegRead($keypath & "\" & $subkey2,"DriverVersion") ExitLoop EndIf WEnd EndIf WEnd If $bPoop Then Return SetError(0,1,0) Return $return EndFunc Edited October 17, 2007 by LarryDalooza AutoIt has helped make me wealthy Link to comment Share on other sites More sharing options...
NutJob Posted October 18, 2007 Author Share Posted October 18, 2007 All Hail Larry ! Just wanted to thank you for the advice and code. Code works great. I appreciate yout time. Thanks! Link to comment Share on other sites More sharing options...
ptrex Posted October 20, 2007 Share Posted October 20, 2007 @All Translation of the VBS expandcollapse popup;***************************************************** ; Script Name: WMIGetWirelessDriversVersion.au3 ; ; Purpose: ; Queries the registry of the target system using WMI ; searching for wireless (802.11) cards. If any such card ; is found, it displays the version of the associated driver ; and the path to the driver file. ; The list of driver versions could be used to identify ; systems running wireless drivers with known vulnerabilities. ; Arguments: ; It takes only one argument: the name or IP address ; of the target system. ; If more arguments are specified they are ignored. ; If run without arguments it targets the localhost. ; ; ;***************************************************** Dim $arrSubKeys, $dwvalue, $strValue, $arrSubKeys2, $strValue2, $strValue3 Const $HKEY_LOCAL_MACHINE = 0x80000002 $strComputer = "." ; Connect to remote registry through WMI ConsoleWrite ("Establishing WMI connection...") $oReg=ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & _ $strComputer & "\root\default:StdRegProv") ConsoleWrite ("...done" & @CRLF) ; Search for Wireless cards ConsoleWrite ("Searching for wireless cards..." & @CRLF) $iNetworkCardsFound = 0 $iWirelessCardsFound = 0 $strKeyPath = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}" $oReg.EnumKey ($HKEY_LOCAL_MACHINE, $strKeyPath, $arrSubKeys) For $subkey In $arrSubKeys If $subkey <> "Descriptions" Then $iNetworkCardsFound = $iNetworkCardsFound+1 ;Wscript.Echo $strKeyPath & "\" & $subkey & "\" & "Connection" $strValueName = "MediaSubType" $oReg.GetDWORDValue ($HKEY_LOCAL_MACHINE,$strKeyPath & "\" & $subkey & "\" & "Connection" ,$strValueName,$dwvalue) If $dwvalue = 2 Then ; This means MediaSubType=2, which is true for wireless cards only $iWirelessCardsFound += 1 ; Get the name of the network connection $strValueName = "Name" $oReg.GetStringValue ($HKEY_LOCAL_MACHINE,$strKeyPath & "\" & $subkey & "\" & "Connection" ,$strValueName,$strValue) ConsoleWrite ("============================" & @CRLF & _ "Found wireless card at: " & _ @TAB & "HKLM\" & $strKeyPath & "\" & $subkey & "\" & "Connection" & @CRLF & _ @TAB & "Name:" & @TAB & $strValue & @CRLF) ; $subkey will correspond to the value of NetCfgInstanceID of the ; corresponding key under: ; HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\[NUMBER]\ ;NetCfgInstanceID = {7C1F7564-C990-420E-A4D6-F54092764DF9} ; Let us find that [NUMBER]. (Will be called $subkey2) $strKeyPath2 = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}" $oReg.EnumKey ($HKEY_LOCAL_MACHINE, $strKeyPath2, $arrSubKeys2) For $subkey2 In $arrSubKeys2 ;Wscript.Echo "Checking: " & $strKeyPath2 & "\" & $subkey2 $strValueName2 = "NetCfgInstanceId" $oReg.GetStringValue ($HKEY_LOCAL_MACHINE,$strKeyPath2 & "\" & $subkey2 ,$strValueName2,$strValue2) If $strValue2 = $subkey Then ; Show path ConsoleWrite ("Found corresponding driver data at:" & @CRLF ) ConsoleWrite ( "HKLM\" & $strKeyPath2 & "\" & $subkey2 & @CRLF) ; Show NetCfgInstanceId ConsoleWrite (@TAB & $strValueName2 & ":" & @TAB & $strValue2 & @CRLF ) ; Show DriverDesc $strValueName2 = "DriverDesc" $oReg.GetStringValue ($HKEY_LOCAL_MACHINE,$strKeyPath2 & "\" & $subkey2 ,$strValueName2,$strValue2) ConsoleWrite (@TAB & $strValueName2 & ":" & @TAB & $strValue2 & @CRLF ) ; Show DriverVersion $strValueName2 = "DriverVersion" $oReg.GetStringValue ($HKEY_LOCAL_MACHINE,$strKeyPath2 & "\" & $subkey2 ,$strValueName2,$strValue2) ConsoleWrite (@TAB & $strValueName2 & ":" & @TAB & $strValue2 & @CRLF ) ; Show Service $strValueName2 = "Service" $oReg.GetStringValue ($HKEY_LOCAL_MACHINE,$strKeyPath2 & "\" & $subkey2 & "\Ndi",$strValueName2,$strValue2) ConsoleWrite (@TAB & $strValueName2 & ":" & @TAB & $strValue2 & @CRLF ) $strService = $strValue2 ; Show ImagePath $strKeyPath3 = "SYSTEM\CurrentControlSet\Services\" & $strService $strValueName3 = "ImagePath" $oReg.GetStringValue ($HKEY_LOCAL_MACHINE,$strKeyPath3 & "\",$strValueName3,$strValue3) ConsoleWrite (@TAB & $strValueName3 & ":" & @TAB & $strValue3 & @CRLF ) ; Print separator ConsoleWrite ("============================" & @CRLF & @CRLF) EndIf Next EndIf ;($dwvalue=2) EndIf ;($subkey <> "Descriptions") Next ConsoleWrite ("...done" & @CRLF) ;Statistics ConsoleWrite ("Total number of network cards found: " & @TAB & $iNetworkCardsFound & @CRLF) ConsoleWrite ("Total number of wireless network cards found: " & @TAB & $iWirelessCardsFound & @CRLF) Regards ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New 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