Cuando el Usuario ingrese la clave tu le haces un "hash" a la clave (para agregar mas seguridad puedes usar tambien otros datos como el del nombre del PC en el hash) y ese "hash" lo guardas en un archivo/registro de windows. Luego con ese "hash" encriptas la clave que usó el usuario y guardas tambien la clave cifrada en el archivo/registro windows.
Cada vez que el usuario abra el programa buscará la clave cifrada en el archivo/registro de windows y la decodificará con el "hash" y si al comprobar la clave resulta verdadera entonces abrirá la ventana principal.
Si queres ir mas profundo aún; una ves decifrada la clave le haces un "hash" a la clave (para agregar mas seguridad puedes usar tambien otros datos como el del nombre del PC en el hash) y si coincide con el "hash" guardado primeramente en el archivo/registro de windows entonces el programa corre en el PC correcto. Esto es útil si al "hash" original le agregas por ejemplo el nombre del PC, entonces al intentar crear el "hash" de comprobación y compararlo con el original se dara cuenta si corre en el PC correcto o corre en el PC del vecino
** El algoritmo MD5 esta disponible como módulo .bas en internet con codigo abrierto. Tambien puedes usar tu propio metodo claro, así no sabrán que es lo que has hecho. Aqui obtienes uno: http://www.bullzip.com/md5/vb/md5-vb-class.htm
** El nombre de la PC se puede obtener mediante Apis:
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Aqui un ejemplo: http://www.tek-tips.com/faqs.cfm?fid=429
...mmm me pregunto si es seguro este metodo.