I need to use unique computer id for the purpose of software licensing. I decided to use CPU Flags. On MSVC they are retrived with function \_\_cpuid, and on gcc version 4.3 and up with the function \_\_get\_cpuid. I get an integer out of these functions which is sort of a bit array with the purpose to be used as unique ID. 

What I'm not sure whether the CPU flags retrieved with the above functions can ever change? Can those flags be programmatically changed by the user? If not by regular application maybe through BIOS?

Thank you.