****************** ** zGetHDDSerial ** ** returns the last 6 digits of the HDD serial number. LOCAL lcCurDrive, lcHDD, lcValue1 lcCurDrive=SUBSTR(SYS(5),1,1) && return current hard drive letter 'c' ** return the hard drive serial number ofs=create('scripting.filesystemobject') lcHDD=ALLTRIM(STR(abs(ofs.drives(lcCurDrive).serialnumber))) ** get the last 6 digits or pad with '0' if less than 6. IF LEN(lcHDD)<6 lcHDD=PADR(lcHDD,6,'0') ELSE lcHDD=UPPER(SUBSTR(lcHDD,(LEN(lcHDD)-5),6)) ENDIF return lcHDDFollowing this I have a method that confirms the serial number, the first 6 digits must match the hardware id, then the serialhash must correspond to the second part of the serial number.