Can't you just read/write it as a string?
code:
Shell.RegWrite(MsgPlus.ScriptRegPath + Messenger.MyEmail + "\\" + key, bMyVal?"true":"false");
code:
bMyVal = (Shell.RegRead(MsgPlus.ScriptRegPath + Messenger.MyEmail + "\\" + key) == "true");
also, your shell object won't be deleted, because the function returns before your delete statement.