That error is due to you passing a Real number. Registry entries cannot be Floating Point....they must be strings or integers.
I think you need a check to verify the Serial #/Activation code (whatever you want to call it) is a valid one.
Here's how I'd look at this:
Check for the existence of an Auth Registry value, if it exists run the program.
Ask for Auth value or Trial mode,
verify entered value is a valid value,
if so, write it to the Auth Registry, run the program
if not, ask again, repeat
after a 3rd attempt, send to the Trial code
For trial, check for Date Registry value,
if not there, set it, run program advising of time left
if there, report time left, run program
if time expired report it and exit
You are close to these steps, but it seems as thought there are some overlaps and undershoots....and, of course, I could be all wet too......
Oh, and I'd put all of it within the command call so it isn't run when loaded, only when used, with a check whether it's already been verified/dated in this session via a global variable.