Awsome Steve. Thanks for the help. It is above and beyond and I would guess that other Codeminers will be able to benefit from this as well.
>Man, I'm giving away all my secrets here. :). Just kidding. I use the hard drive serial number adjust to six digits, which is what the codemine serial number requires for the first part. So if the user installs a new hard drive or installs it on an alternate drive, he will need to contact support for a new serial number
>
>
>** zGetHDDSerial
>**
>** returns the last 6 digits of the HDD serial number.
>LOCAL lcCurDrive, lcHDD, lcValue1
>lcCurDrive=SUBSTR(SYS(5),1,1)
>
>** 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 lcHDD
>
>Following 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.