why HWID is changed???

I got the machine code by the following code, but when i reinstall the operate system, i ran the program again, the HWID outputed is not the same result. Why?


int _tmain(int argc, _TCHAR* argv)
{
VMProtectBegin(“_tmail”);

char *buf = NULL;
int nSize = VMProtectGetCurrentHWID( NULL , 0 );
if ( nSize )
{
buf = new char[nSize];
VMProtectGetCurrentHWID( buf, nSize );
printf(“HWID: %s\n”, buf);

Id2File(buf, buf);

delete buf;

}
system( “pause” );

VMProtectEnd();

return 0;


}

Hardware ID depends on lots of parameters and two identifiers don’t have to match byte-by-byte to be “equal”. Reinstalling OS may change HWID, but it should still be accepted by VMProtect if nothing else has been changed.