Is there really any way to uniquely identify any computer at all
How about adding motherboard serial number as well e.g.:
using System.management;//Code for retrieving motherboard's serial numberManagementObjectSearcher MOS = new ManagementObjectSearcher("Select * From Win32_BaseBoard");foreach (ManagementObject getserial in MOS.Get()){textBox1.Text = getserial["SerialNumber"].ToString();}//Code for retrieving Processor's IdentityMOS = new ManagementObjectSearcher("Select * From Win32_processor");foreach (ManagementObject getPID in MOS.Get()){textBox2.Text = getPID["ProcessorID"].ToString();}//Code for retrieving Network Adapter ConfigurationMOS = new ManagementObjectSearcher("Select * From Win32_NetworkAdapterConfiguration");foreach (ManagementObject mac in MOS.Get()){textBox3.Text = mac["MACAddress"].ToString();}
The fact in getting a globally unique ID is, only MAC address is the ID that will not change if you set up your system all over. IF you are generating a key for a specific product, the best way to do it is assigning unique IDs for products and combining the product ID with MAC address. Hope it helps.
I Completely agree with just the above comment.
For Software licensening, you can use:
Computer MAC Address (Take all if multiple NIC Card) + Your software Product Code
Most of the renowned telecom vendor is using this technique.