I was born in 1979, so all good to me lol

Love redheads :-D

I told my wife I would leave her for Karen Gillian any day, my wife said "Thats fine, I would leave you for half the movie stars out there".

lol

Dont get me started on Doctor Who. I am still pissed I have to wait till Aug to see the new doctor. Just saying.

Yeah I just needed the HWIDS for the starter database of my program is all, so I only needed HWID, Name and Mfg.

I just updated my program to v1.1.0.

http://www.tweaking.com/content/page/tw … ntify.html

v1.1.0
Complete redesign of the device database. The program was using a normal text file and would loop through to find your device. While this worked fast it would take around 5 to 10 secs to search for your hardware. As the device database grows that would become slower and slower. I have redone the database into a proper database file and set it up in a way to make sure nothing is duplicated to help keep size down. While the new database does make for about a 15% larger file it now gives me the proper method to do searches in the database. Now pulling up your hardware from the database is nearly instant :-D

Changed the device lookup window to automatically move all devices that match with the longest id at the top of the list. The longer the ID the better chance it is the right device.

Because of the larger database size I have changed the downloaded database file from a zip to a 7-zip file since I can get a much better compression. As an example the current database compressed into a zip file is 2.72 MB while compressed into a 7-zip file it is only 1.36 MB. The smaller the file the faster the download when updating the database in the program.

Multiple code changes and improvements.

Honestly I would love to know what you guys think of it, being that you all deal with hardware, drivers and IDs :-D

Shane

Well found yet another bug in the FindHWIDS, it replaces commas in the mfg name and in other places when it shouldnt. I may need to write my own to overcome the amount of bugs in this one lol

So Advanced Micro Devices, Inc. becomes Advanced Micro Devices  Inc.

Shane

Well I went ahead and put the source and the 3.2t I made into a zip file and put it on my site. I will leave it up to one of you guys to put it on source forge or something :-)

Currently working on an update to my hardware identify program. Converting the database from a text file to a proper database. The results are not instant instead of searching the text file :-D v1.1.0 will be out soon.

And here you can grab the course and 3.2t by me :-)

http://tweaking.com/files/findhwids_download.html

Shane

Thanks :-) I program in VB6 so the autoit code was easy for me to understand.

I found the tool because I used it to make the first run of the device database for my new program and used it to scan the driver packs and the inf folder of every version of Windows and a bunch of up to date drivers of the newest major vendors.

He hasnt replied to my emails or even posted back here. He did say anyone could email him for the source so i could just give it to one of you and you could put it up and make it open source for people to help with. Personally I would rather make the program in VB and not autoit.

New program is having a good start and a lot of people are submitting their hardware ids on their systems helping the list grow. The program records every ID for a device. So how a video card will have say 5 ids. The longer the ID the more it points to a specific version of a device. So the database can really help pinpoint hardware for people since it records for every ID. So in other words that video card would be in the database 5 times for each ID.

Thats why in the program I included a "Best Match Option" which is basically the longer the ID that matches the better the chance that is the right device :-)

After using the program here and seeing other people had errors and I was able to fix it, it just felt like the right thing to do to post here and show how to fix it and maybe even post a fix. :-)

Shane

Well I have my new program ready.

Till then if you want to try it you can. Here is a download link, and some screen shots :-)

http://www.tweaking.com/content/page/tw … ntify.html

I am more than happy to help get the FindHWIDS up to date if you guys want, havent heard much back so wasnt sure.

Shane

Question, as I look more into this, while Windows provides classids, drivers are allowed to create their own as well. And it is stored in the inf file, why does the program use a preset list instead of pulling the class from the inf file?

The code in the program shows it pulls the classid first, if it returns a result it moves on, if it cant find the classid in the preset list it THEN pulls the class from the inf. Would it be better to just have it pull the class and forget the preset list?

        $sinfread_classguid = IniRead($element, "Version", "ClassGUID", "")
        _stringwithremove($sinfread_classguid, 1)
        Local $transclassguid = ""
        Select
            Case $sinfread_classguid <> ""
                $transclassguid = _translateclassguid($sinfread_classguid)
            Case Else
                $sinfread_classguid = "Warning: No Class Guid"
        EndSelect
        Select
            Case $transclassguid <> ""
                $ainfclass = $transclassguid
            Case Else
                $ainfclass = IniRead($element, "Version", "Class", "")
                _stringwithremove($ainfclass, 1, 1, 1)
        EndSelect

In my program, since it is pulling hardware info from the current system I just have it pull the class from the registry instead of having presets. But not sure what the best way is to have it do in this program and inf files.

Shane

Another quick note, the link I posted to MS, that is the class IDs used by vendors, and on the left you will see the ones reserved for the system

http://msdn.microsoft.com/en-us/library … 85%29.aspx

He has the classids wrong in the program and is missing some from these 2 pages, USBDevice is for vendors and has a different classid

USB Device

    Class = USBDevice
    ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}

    USBDevice includes all USB devices that do not belong to another class. This class is not used for USB host controllers and hubs.


Where the windows reserved ones have it listed as USB and the classid

USB Bus Devices (hubs and host controllers)

    Class = USB
    ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}

    This class includes USB host controllers and USB hubs, but not USB peripherals. Drivers for this class are system-supplied.


So if you like I can go through and simply redo that function in the program and put all the classids from both pages and with all of them listed. Should correct the problems you are having with it not listed the correct class :-)

Shane

I can upload the t version I made now or if you like send me the P version you use, I will decompile it and compare the classids in it with the S version and see if I can make a fix, maybe the checkbox idea.

How I found this bug was when I took all the Windows 7 driver packs and extracted them all to a folder and had findhwids scan it, thats when i got the error. So I dug in and found and fixed it and now findhwids goes through them all with no error.

For my new program and having a device list this tool is perfect. I can download any updated drivers that are not in the driver packs, just like I did with the ati v13.9 drivers and scan the folder and pull the hardware ids of the newer cards. Can do the same with nvidia and others. So I am more than happy to help keep this tool updated, it helped me so only fair to give some help in return :-)

Shane

Thanks lol

I am actually writing a new program for my tweaking.com site and it is a hardware identifier program. It will have a lot of other stuff in it as well as a easy check if anything on your system is not in the device database and auto submit it to help it grow.

SO to start off with a first database I used this program to scan all driver packs and every inf folder on each different version of Windows since xp to 8.1, then made a program script to remove the duplicates. I only need 3 sections, hardware id, name and mfg.

On to your problem, yes it should be easy to fix. Here is how it is done, it pulls the classid stored in the inf file then simply sends it to a function where based on the id given will return a precoded text response which can be changed.

Func _translateclassguid($vclassguid)
	Switch $vclassguid
		Case "{72631e54-78a4-11d0-bcf7-00aa00b7b32a}"
			$vclassname = "Battery"
			$vclassextname = "Battery Devices"
			$vclassdesc = "This class includes battery devices and UPS devices."
		Case "{53D29EF7-377C-4D14-864B-EB3A85769359}"
			$vclassname = "Biometric"
			$vclassextname = "Biometric Device"
			$vclassdesc = "(Windows Server 2003 and later versions of Windows) This class includes all biometric-based personal identification devices."
		Case "{e0cbf06c-cd8b-4647-bb8a-263b43f0f974}"
			$vclassname = "Bluetooth"
			$vclassextname = "Bluetooth Devices"
			$vclassdesc = "(Windows XP SP1 and later versions of Windows) This class includes all Bluetooth devices."
		Case "{4d36e965-e325-11ce-bfc1-08002be10318}"
			$vclassname = "CDROM"
			$vclassextname = "CD-ROM Drives"
			$vclassdesc = "This class includes CD-ROM drives, including SCSI CD-ROM drives. By default, the system's CD-ROM class installer also installs a system-supplied CD audio driver and CD-ROM changer driver as Plug and Play filters."
		Case "{4d36e967-e325-11ce-bfc1-08002be10318}"
			$vclassname = "DiskDrive"
			$vclassextname = "Disk Drives"
			$vclassdesc = "This class includes hard disk drives. See also the HDC and SCSIAdapter classes."
		Case "{4d36e968-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Display"
			$vclassextname = "Display Adapters"
			$vclassdesc = "This class includes video adapters. Drivers for this class include display drivers and video miniport drivers."
		Case "{4d36e969-e325-11ce-bfc1-08002be10318}"
			$vclassname = "FDC"
			$vclassextname = "Floppy Disk Controllers"
			$vclassdesc = "This class includes floppy disk drive controllers."
		Case "{4d36e980-e325-11ce-bfc1-08002be10318}"
			$vclassname = "FloppyDisk"
			$vclassextname = "Floppy Disk Drives"
			$vclassdesc = "This class includes floppy disk drives."
		Case "{4d36e96a-e325-11ce-bfc1-08002be10318}"
			$vclassname = "HDC"
			$vclassextname = "Hard Disk Controllers"
			$vclassdesc = "This class includes hard disk controllers, including ATA/ATAPI controllers but not SCSI and RAID disk controllers."
		Case "{745a17a0-74d3-11d0-b6fe-00a0c90f57da}"
			$vclassname = "HID Class"
			$vclassextname = "Human Interface Devices (HID)"
			$vclassdesc = "This class includes interactive input devices that are operated by the system-supplied HID class driver. This includes USB devices that comply with the USB HID Standard and non-USB devices that use a HID minidriver. For more information, see HIDClass Device Setup Class. (See also the Keyboard or Mouse classes later in this list.)"
		Case "{48721b56-6795-11d2-b1a8-0080c72e74a2}"
			$vclassname = "DOT4"
			$vclassextname = "IEEE 1284.4 Devices"
			$vclassdesc = "This class includes devices that control the operation of multifunction IEEE 1284.4 peripheral devices."
		Case "{49ce6ac8-6f86-11d2-ble5-0080c72e74a2}"
			$vclassname = "DOT4Print"
			$vclassextname = "IEEE 1284.4 Print Functions"
			$vclassdesc = "This class includes Dot4 print functions. A Dot4 print function is a function on a Dot4 device and has a single child device, which is a member of the Printer device setup class."
		Case "{7ebefbc0-3200-11d2-b4c2-00a0C9697d07}"
			$vclassname = "61883"
			$vclassextname = "IEEE 1394 Devices That Support the 61883 Protocol"
			$vclassdesc = "This class includes IEEE 1394 devices that support the IEC-61883 protocol device class. The 61883 component includes the 61883.sys protocol driver that transmits various audio and video data streams over the 1394 bus. These currently include standard/high/low quality DV, MPEG2, DSS, and Audio. These data streams are defined by the IEC-61883 specifications."
		Case "{c06ff265-ae09-48f0-812c16753d7cba83}"
			$vclassname = "AVC"
			$vclassextname = "IEEE 1394 Devices That Support the AVC Protocol"
			$vclassdesc = "This class includes IEEE 1394 devices that support the AVC protocol device class."
		Case "{d48179be-ec20-11d1-b6b8-00c04fa372a7}"
			$vclassname = "SBP2"
			$vclassextname = "IEEE 1394 Devices That Support the SBP2 Protocol"
			$vclassdesc = "This class includes IEEE 1394 devices that support the SBP2 protocol device class."
		Case "{6bdd1fc1-810f-11d0-bec7-08002be2092f}"
			$vclassname = "1394"
			$vclassextname = "IEEE 1394 Host Bus Controller"
			$vclassdesc = "This class includes 1394 host controllers connected on a PCI bus, but not 1394 peripherals. Drivers for this class are system-supplied."
		Case "{6bdd1fc6-810f-11d0-bec7-08002be2092f}"
			$vclassname = "Image"
			$vclassextname = "Imaging Device"
			$vclassdesc = "This class includes still-image capture devices, digital cameras, and scanners. "
		Case "{6bdd1fc5-810f-11d0-bec7-08002be2092f}"
			$vclassname = "Infrared"
			$vclassextname = "IrDA Devices"
			$vclassdesc = "Adapter class for other NDIS network adapter miniports."
		Case "{4d36e96b-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Keyboard"
			$vclassextname = "Keyboard"
			$vclassdesc = "This class includes all keyboards. That is, it must also be specified in the (secondary) INF for an enumerated child HID keyboard device."
		Case "{ce5939ae-ebde-11d0-b181-0000f8753ec4}"
			$vclassname = "MediumChanger"
			$vclassextname = "Media Changers"
			$vclassdesc = "This class includes SCSI media changer devices."
		Case "{4d36e970-e325-11ce-bfc1-08002be10318}"
			$vclassname = "MTD"
			$vclassextname = "Memory Technology Driver"
			$vclassdesc = "This class includes memory devices, such as flash memory cards."
		Case "{4d36e96d-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Modem"
			$vclassextname = "Modem"
			$vclassdesc = "This class includes modem devices. An INF file for a device of this class specifies the features and configuration of the device and stores this information in the registry. An INF file for a device of this class can also be used to install device drivers for a controllerless modem or a software modem. These devices split the functionality between the modem device and the device driver. For more information about modem INF files and Microsoft Windows Driver Model (WDM) modem devices, see Overview of Modem INF Files and Adding WDM Modem Support."
		Case "{4d36e96e-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Monitor"
			$vclassextname = "Monitor"
			$vclassdesc = "This class includes display monitors. An INF for a device of this class installs no device driver(s), but instead specifies the features of a particular monitor to be stored in the registry for use by drivers of video adapters. (Monitors are enumerated as the child devices of display adapters.)"
		Case "{4d36e96f-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Mouse"
			$vclassextname = "Mouse"
			$vclassdesc = "This class includes all mouse devices and other kinds of pointing devices, such as trackballs. That is, this class must also be specified in the (secondary) INF for an enumerated child HID mouse device."
		Case "{4d36e971-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Multifunction"
			$vclassextname = "Multifunction Devices"
			$vclassdesc = "This class includes combo cards, such as a PCMCIA modem and netcard adapter. The driver for such a Plug and Play multifunction device is installed under this class and enumerates the modem and netcard separately as its child devices."
		Case "{4d36e96c-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Media"
			$vclassextname = "Multimedia"
			$vclassdesc = "This class includes Audio and DVD multimedia devices, joystick ports, and full-motion video capture devices."
		Case "{50906cb8-ba12-11d1-bf5d-0000f805f530}"
			$vclassname = "MultiportSerial"
			$vclassextname = "Multiport Serial Adapters"
			$vclassdesc = "This class includes intelligent multiport serial cards, but not peripheral devices that connect to its ports. It does not include unintelligent (16550-type) multiport serial controllers or single-port serial controllers (see the Ports class)."
		Case "{4d36e972-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Net"
			$vclassextname = "Network Adapter"
			$vclassdesc = "This class includes NDIS miniport drivers excluding Fast-IR miniport drivers, NDIS intermediate drivers (of virtual adapters), and CoNDIS MCM miniport drivers."
		Case "{4d36e973-e325-11ce-bfc1-08002be10318}"
			$vclassname = "NetClient"
			$vclassextname = "Network Client"
			$vclassdesc = "This class includes network and/or print providers."
		Case "{4d36e974-e325-11ce-bfc1-08002be10318}"
			$vclassname = "NetService"
			$vclassextname = "Network Service"
			$vclassdesc = "This class includes network services, such as redirectors and servers."
		Case "{4d36e975-e325-11ce-bfc1-08002be10318}"
			$vclassname = "NetTrans"
			$vclassextname = "Network Transport"
			$vclassdesc = "This class includes NDIS protocols CoNDIS stand-alone call managers, and CoNDIS clients, in addition to higher level drivers in transport stacks."
		Case "{268c95a1-edfe-11d3-95c3-0010dc4050a5}"
			$vclassname = "SecurityAccelerator"
			$vclassextname = "PCI SSL Accelerator"
			$vclassdesc = "This class includes devices that accelerate secure socket layer (SSL) cryptographic processing."
		Case "{4d36e977-e325-11ce-bfc1-08002be10318}"
			$vclassname = "PCMCIA"
			$vclassextname = "PCMCIA Adapters"
			$vclassdesc = "This class includes PCMCIA and CardBus host controllers, but not PCMCIA or CardBus peripherals. Drivers for this class are system-supplied."
		Case "{4d36e978-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Ports"
			$vclassextname = "Ports (COM & LPT ports)"
			$vclassdesc = "This class includes serial and parallel port devices. See also the MultiportSerial class."
		Case "{4d36e979-e325-11ce-bfc1-08002be10318}"
			$vclassname = "Printer"
			$vclassextname = "Printers"
			$vclassdesc = "This class includes printers."
		Case "{4658ee7e-f050-11d1-b6bd-00c04fa372a7}"
			$vclassname = "PNPPrinters"
			$vclassextname = "Printers, Bus-specific class drivers"
			$vclassdesc = "This class includes SCSI/1394-enumerated printers. Drivers for this class provide printer communication for a specific bus."
		Case "{50127dc3-0f36-415e-a6cc-4cb3be910b65}"
			$vclassname = "Processor"
			$vclassextname = "Processors"
			$vclassdesc = "This class includes processor types."
		Case "{4d36e97b-e325-11ce-bfc1-08002be10318}"
			$vclassname = "SCSIAdapter"
			$vclassextname = "SCSI and RAID Controllers"
			$vclassdesc = "This class includes SCSI HBAs (Host Bus Adapters) and disk-array controllers."
		Case "{5175d334-c371-4806-b3ba-71fd53c9258d}"
			$vclassname = "Sensor"
			$vclassextname = "Sensors"
			$vclassdesc = "(Windows 7 and later versions of Windows) This class includes sensor and location devices, such as GPS devices."
		Case "{50dd5230-ba8a-11d1-bf5d-0000f805f530}"
			$vclassname = "SmartCardReader"
			$vclassextname = "Smart Card Readers"
			$vclassdesc = "This class includes smart card readers."
		Case "{71a27cdd-812a-11d0-bec7-08002be2092f}"
			$vclassname = "Volume"
			$vclassextname = "Storage Volumes"
			$vclassdesc = "This class includes storage volumes as defined by the system-supplied logical volume manager and class drivers that create device objects to represent storage volumes, such as the system disk class driver."
		Case "{4d36e97d-e325-11ce-bfc1-08002be10318}"
			$vclassname = "System"
			$vclassextname = "System Devices"
			$vclassdesc = "This class includes HALs, system buses, system bridges, the system ACPI driver, and the system volume manager driver."
		Case "{6d807884-7d21-11cf-801c-08002be10318}"
			$vclassname = "TapeDrive"
			$vclassextname = "Tape Drives"
			$vclassdesc = "This class includes tape drives, including all tape miniclass drivers."
		Case "{36fc9e60-c465-11cf-8056-444553540000}"
			$vclassname = "USBDevice"
			$vclassextname = "USB Device"
			$vclassdesc = "USBDevice includes all USB devices that do not belong to another class. This class is not used for USB host controllers and hubs"
		Case "{25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}"
			$vclassname = "WCEUSBS"
			$vclassextname = "Windows CE USB ActiveSync Devices"
			$vclassdesc = "This class includes Windows CE ActiveSync devices. The WCEUSBS setup class supports communication between a personal computer and a device that is compatible with the Windows CE ActiveSync driver (generally, PocketPC devices) over USB."
		Case "{eec5ad98-8080-425f-922a-dabf3de3f69a}"
			$vclassname = "WPD"
			$vclassextname = "Windows Portable Devices (WPD)"
			$vclassdesc = "(Windows Vista and later versions of Windows) This class includes WPD devices."
		Case "{997b5d8d-c442-4f2e-baf3-9c8e671e9e21}"
			$vclassname = "SideShow"
			$vclassextname = "Windows SideShow"
			$vclassdesc = "(Windows Vista and later versions of Windows) This class includes all devices that are compatible with Windows SideShow."
		Case "{2D3B1222-B28A-44f7-BE45-3D7FD2F57C43}"
			$vclassname = "ElxPlus"
			$vclassextname = "Emulex PLUS"
			$vclassdesc = ""
		Case "{1a3e09be-1e45-494b-9174-d7385b45bbf5}"
			$vclassname = "Vendor_ClassName"
			$vclassextname = "NVIDIA Network Bus Enumerator"
			$vclassdesc = ""
		Case "{4B571702-E6C6-4db1-A2C6-FD1D53A70FC3}"
			$vclassname = "ALiUSB"
			$vclassextname = "ALi USB Controller"
			$vclassdesc = ""
		Case "{a0a588a4-c46f-4b37-b7ea-c82fe89870c6}"
			$vclassname = "SDHost"
			$vclassextname = "Intel SD Controller"
			$vclassdesc = ""
		Case "{555E05A3-904C-42cf-AEF4-EE4035EC6362}"
			$vclassname = "Egatecard"
			$vclassextname = "Axalto USB SD"
			$vclassdesc = ""
		Case "{09E9A11D-CCB2-45ae-9BE8-65C263E60490}"
			$vclassname = "CVAULT"
			$vclassextname = "Broadcom Fingerprint Scanner"
			$vclassdesc = ""
		Case "{e7f8dc5e-a591-4264-8a30-6eae85be7a3f}"
			$vclassname = "ActivCardClass"
			$vclassextname = "ActivCard SmartReader"
			$vclassdesc = ""
		Case "{084ABEA7-3EE1-4917-AA78-7670D1E625E1}"
			$vclassname = "ActivCardKeyBus"
			$vclassextname = "ActivCard Virtual Reader Enumerator"
			$vclassdesc = ""
		Case "{41AD5E8B-5CB0-4275-B829-EDA617114AE8}"
			$vclassname = "ActivKeySimBus"
			$vclassextname = "ActivIdentity SmartReader"
			$vclassdesc = ""
		Case Else
			Return ""
	EndSwitch
	Return $vclassname
EndFunction

Microsoft offers a list of the classids here and what they are for.
http://msdn.microsoft.com/en-us/library … 85%29.aspx

Anotherway is to pull the classid info from the registry and pull what it is listed as there, I have my old cs fire monitor program that can do that on xp. SO making a quick vb6 app should be easy to do that.

I could also see about putting text boxes into the program to allow you to put how you want the text for each id to show up as, but that would be a lot of textboxes lol.

Or is the problem is MS changed what the classid gets reported as from xp to say 7, then maybe the easyiest thing to do is to change the code to have a text for what the classids use to be on xp, then based on the system or even put a simple option is can decide which classid text to return :-)

So think of this, a checkbox that says "Use XP ClassIDs"
Then in the code, take USB for example

RIght now it is
Case "{36fc9e60-c465-11cf-8056-444553540000}"
            $vclassname = "USBDevice"
            $vclassextname = "USB Device"
            $vclassdesc = "USBDevice includes all USB devices that do not belong to another class. This class is not used for USB host controllers and hubs"

COuld be

Case "{36fc9e60-c465-11cf-8056-444553540000}"
            $vclassname = "USBDevice"
            $vclassnamexp = "USB"
            $vclassextname = "USB Device"
            $vclassdesc = "USBDevice includes all USB devices that do not belong to another class. This class is not used for USB host controllers and hubs"

If the checkbox is set it uses $vclassnamexp otherwise it uses $vclassname. ;-)

If you ever take a look at some of my programs you will see I have a little practice with all this LOL

-Shane

I just added those 3 lines and simply changed the version to 3.2t and then complied it to both exes, nothing else was changed so still very much his program. Will be more than happy to post the new versions if you think it would be ok :-)

You said you are using 3.2p because of class names, can you explain that more, perhaps I can make a fix for that as well. :-)

This is handy tool to have. When using it I get an error when it tries to read a certain Realtek inf file.
Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.

I emailed him about getting the source, haven't got a reply yet, but since it is made in autoit I was able to decompiled it and get the code. I found the section causing the error and fixed it.

This section is what fails

    Local $akey = StringRegExp(@LF & $adata[0], "\n\s*(.*?)\s*=", 3)
    Local $avalue = StringRegExp(@LF & $adata[0], "\n\s*.*?\s*=(.*?)\r", 3)
    Local $nubound = UBound($akey)
    Local $asection[$nubound + 1][2]
    $asection[0][0] = $nubound
    For $icc = 0 To $nubound - 1
        Select
            Case StringLeft($akey[$icc], 1) <> ";"
                $asection[$icc + 1][0] = $akey[$icc]
                $asection[$icc + 1][1] = $avalue[$icc]
        EndSelect
     Next

What happens is when the $avalue doesnt have the same amount or more as $akey, and there is no check for it. So a simple edit (just 3 added lines) fixes it by simply making sure $avaule has the same or more.

    Local $akey = StringRegExp(@LF & $adata[0], "\n\s*(.*?)\s*=", 3)
    Local $avalue = StringRegExp(@LF & $adata[0], "\n\s*.*?\s*=(.*?)\r", 3)
    Local $nubound = UBound($akey)
    Local $nubound2 = UBound($avalue)
    Local $asection[$nubound + 1][2]
    $asection[0][0] = $nubound
    if $nubound <= $nubound2 then
    For $icc = 0 To $nubound - 1
        Select
            Case StringLeft($akey[$icc], 1) <> ";"
                $asection[$icc + 1][0] = $akey[$icc]
                $asection[$icc + 1][1] = $avalue[$icc]
        EndSelect
     Next
     EndIf

So after that it now runs through all the inf files without erroring out.

If I get permission from him I will be more than happy to put out the updated fix for it, or if he sees this he can put the fix in himself. :-)

-Shane