I want to retrieve the unique ID of a machine.

Like others I also did a lot of research, and found none of the process of Unique ID generation works perfectly.

For Motherboard Serial Number (ID): It is Unique; it can't be changed. However, it may not be found in some machines if Manufacturers didn't put information on Memory Location. Then I found it gives no Unique Id .. lol

Similarly for "Processor ID", "BIOS ID".

Afraid to use other hardware information of PC.

MAC and Windows Product ID can be changed by a software.

And is "Windows Product ID" unique?

One option is there to combine those but what if combination is not unique if above conditions applied?

Any other way to find the Unique ID of a machine?

---

**Edit:**
 I want to generate serial key based on that unique ID for software piracy protection.
Machine means target PC I've to install software.
@Guge: Thanks for mentioning.