Als erstes muss man dazu sagen, dass du niemals mehr tun kannst, als ein paar scriptkiddies abschrecken und einen Profi 2-3 Minuten beschäftigen. Das liegt daran, dass egal wie sicher das Passwort und die Art des Speicherns ist: Der Profi ändert einfach den ein oder anderen Sprung in Assembler und umgeht die Passwortabfrage einfach. Eine Exe zu cracken ist nicht so das Problem.
Zum Prinzip: Du könntest das Passwort als
HASH speichern. Es ist (fast?) unmöglich, vom Hash auf's Passwort zu kommen, aber umgekehrt geht's schnell und einfach. Du errechnest nach dem Eingeben des Passworts einfach den Hash und vergleichst ihn mit dem gespeicherten Hash, schon weißt du, ob's das selbe Passwort ist.
Intelligent wäre es vielleicht, dass Passwort im CURRENT_USER in der Registry zu speichern. Weise aber deine Benutzer darauf hin, dass du in der Registry rumwurstelst, oder sag ihnen gleich ganz genau, was du tust (Die Sicherheit eines Algorithmus basiert nie darauf, dass er unbekannt ist, es ist egal, ob der User weiß, woher er den Hash bekommt, da er damit eh nichts anfangen kann.), da ich als User ziemlich sauer wäre, wenn meine Registry irgendwann einige 100 MB einnimmt, weil irgendwelche Programmierer ihre Einträge darin vergessen.
Wie du das am besten gestaltest, ist eigentlich dir überlassen, ich würde einfach in der Projektdatei überprüfen, ob der Registryeintrag vorhanden ist oder nicht. Wenn ja, gibt man eine Passwortabfrage aus, falls diese negativ ist, einfach die ganzen Application.CreateForm(xy); nicht ausführen und Application.Terminate ausführen.
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.