Retrieve Unique ID Number of Thumb Drive

Using a .bat file and the command line, (Windows XP) I have been asked to try to get the ID# off of a USB thumb drive.  I know how to do this for the hard drive, but now my client wants the unique identifier off of a thumb drive.
fmwebschoolAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Mayank SAssociate Director - Product EngineeringCommented:
I guess if you attach something to the USB port, you can talk to it using Java Comm API and that will give you a port identifier for the same. Or see

http://today.java.net/pub/a/today/2006/07/06/java-and-usb.html
0
lnkevinCommented:
Plug your USB in any PC, then download and save SIW program in your C:
Double click on the program, locate storage devices. Under interface tab, you will see USB and its ID

http://www.shareup.com/SIW-download-23742.html

K
0
grayeCommented:
You can get the volume serial number (Ok, not exacly the same as the device ID) with a simple shell script using WMI

Here is an exmple to demonstrate the concepts.

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_LogicalDisk",,48)
For Each objItem in colItems
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Win32_LogicalDisk instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "DeviceID: " & objItem.DeviceID
    Wscript.Echo "DriveType: " & objItem.DriveType
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
    Wscript.Echo "VolumeName: " & objItem.VolumeName
    Wscript.Echo "VolumeSerialNumber: " & objItem.VolumeSerialNumber
Next
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

fmwebschoolAuthor Commented:
Thank you so much for the code!
0
fmwebschoolAuthor Commented:
Hi Graye,

Recently you posted on Experts exchange code to retrieve the volume serial number of a thumbdrive - your code:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_LogicalDisk",,48)
For Each objItem in colItems
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Win32_LogicalDisk instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "DeviceID: " & objItem.DeviceID
    Wscript.Echo "DriveType: " & objItem.DriveType
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
    Wscript.Echo "VolumeName: " & objItem.VolumeName
    Wscript.Echo "VolumeSerialNumber: " & objItem.VolumeSerialNumber


Is it posible to retrieve the actual hardware serial number of the parent device for that volume?  That would be amazingly helpful!

Thank you so much for your time, and any guidance you can give.

In Kindness
Stephen K Knight
0
grayeCommented:
That's bit more complicated to do...  it takes a lot of low-level programming to get the "String Descriptor" from the USB Device Driver.  Also not all usb devices support serial numbers.    

About the best you can do is to use the identifier that Microsoft generates during it's Plug and Play negotiation.  It is generally understood (but not documented) that the PnPDeviceID is generated the same way on all PCs and all versions of Windows.

Take a look at the PnPDeviceIDs of two "identical" USB devices, notice where the values differ:

PNPDeviceID: USBSTOR\DISK&VEN_&PROD_USB_FLASH_MEMORY&REV_6.50\03716B60A130B8F8&0
PNPDeviceID: USBSTOR\DISK&VEN_&PROD_USB_FLASH_MEMORY&REV_6.50\0B317B6080E24882&0
                                                                                                                         ^^^^^^^^^^^^^
Although technically, the "03716B60A130B8F8" and "0B317B6080E24882" values are not the device serial number, they will probably do in your case.

You'd get the PnPDeviceID from the "raw" disk drive using the Win32_DiskDrive class

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_DiskDrive",,48)
For Each objItem in colItems
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Win32_DiskDrive instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "DeviceID: " & objItem.DeviceID
    Wscript.Echo "InterfaceType: " & objItem.InterfaceType
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Model: " & objItem.Model
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
Next
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Storage

From novice to tech pro — start learning today.