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.
If you are trying to track unique computers in a situation where the computer owner is intentionally trying to bypass your unique check, for example a free computer game where you only want one account per player, I have seen a similar approach mentioned above but with the use of some encryption.
Gather, or try to gather, several pieces of relatively stable PC information (The MotherboardID / MAC Address / BIOS) combine them with a salt prefix and then encrypt it using a simple free algorithm. That key is what you store for that player along with their UserID similar to the way passwords are encrypted. That key will be a pretty good unique identifier for "The machine" which you can check every time they log in.
There are several pieces of computer information you can go after, depending on how risky you want to get with normal people who change their components, but as long as you don't get blanks for everything you are checking for you should be pretty safe.