During a recent project, I had to solve a problem which is NOT really new:
Creating a signature using computer hardware that uniquely identifies it
I didn't want to depend of software characteristics because I didn't want the signature to change even if user decides to change or install new operating system.
I used uncle Google extensively and came across many resources such as:
I learnt following things in the process:
- I quickly found that most hardware information can be accessed using WMI only. Since WMI is not available below Windows 2000, I tried to find other alternatives but couldn't find any. I could get the volume serial number using Windows API but that was not enough. So WMI seems to be only viable choice.
- Using MAC address for machine signature generation is generally a bad idea because many manufactures allow you to change it and you can have multiple MAC addresses if someone is using more than one connection (think of someone using laptop connected to a LAN and also a WIFI network).
- Using Processor ID used to work in earlier days but somehow Intel has decided to stop giving unique processor ID to each processor these days.
- It is not right to rely on only one hardware parameter considering the dynamic advancement in computer hardware industry (Multi core processor are so common these days).
To easily analyse the computer hardware parameters, I created an application which uses WMI to get hardware information. I called it Machine Explorer! You can download the application freely and have fun with it.
Here is how it looks like:
I found out that some serial numbers such as BIOS serial number and Motherboard serial number are unique and they are not likely to change also. There might be other candidates which you explore (do let me know if you find any).