Also quasi als "Kopierschutz" bzw. damit halt keiner das Programm ohne zu zahlen benutzt?
Ganz ehrlich, das ist immer problematisch, weil der Schutz nie 100% wirkt. Du kannst sowas nur herauszögern. Aber so ein Teil auszuhebeln dauert im allgemeinen wirklich nicht lange, und wenn's einer unbedingt hinkriegen will, dann ist es ihm auch egal, ob er's in 5 Minuten oder in 5 Stunden hat.
Normalerweise wird so vorgegangen, daß es entweder ein bestimmtes Verfahren zur Berechnung von gültigen Keys gibt, d.h. es gibt dann auch viele passende Keys, und wenn sich einer bei Dir registriert, dann läßt Du von Deinem Generator einfach einen ausrechnen und gibst ihm den. Problem 1: Er kann den Key auch weitergeben. Problem 2: Jemand kann die Berechnungsmethode rausfinden und einen eigenen KeyGenerator schreiben. Beim ersten Problem kannst Du wenigstens noch nachverfolgen, WER seinen Key weitergegeben hat (da Du ja eine Kunden-Datenbank führst, wo für jeden Kunden der vergebene Key notiert ist). Aber ob das rechtlich Wirkung hat? Es besteht ja die Möglichkeit, daß er den Key nicht bewußt weitergegeben hat, sondern daß er ihm wegspioniert wurde... also bringt's Dir im Endeffekt eh nichts.
Eine andere Möglichkeit ist es, daß Du ein Key-Berechnungsverfahren erstellst, das den Namen des Anwenders irgendwie mit einrechnet. Dann kann man nur noch Keys eingeben, die zum Namen passen, und wenn Person A seinen Key an Person B weitergibt, muß Person B trotzdem den Namen von Person A in das Eingabefeld mit eingeben. Problem 1: Das macht manchen nichts aus, und wer will das schon merken (ist vielleicht eher für Firmen interessant, weil bei denen eine Kontrolle eher denkbar ist als bei Privatpersonen). Problem 2: Auch hierfür kann man einen KeyGenerator schreiben, und zwar einen, bei dem man einen beliebigen Namen eingibt und der Generator den passenden Key ausspuckt.
Ein insgesamtes Problem ist auch noch, daß Du den Key ja intern überprüfen mußt. Und dazu mußt Du ihn natürlich direkt nochmal ausrechnen lassen, um ihn zu vergleichen. Somit befindet sich der Algorithmus direkt in Deinem Programm, und man braucht ihn sich nur noch rauszuziehen und in einen KeyGenerator zu verwandeln. Natürlich kannst Du hier auch wieder ein bißchen verschleiern, aber einen hartgesottenen Cracker schreckt auch das nicht ab - im Gegenteil, er sieht es als Herausforderung an.
Daher würde ich mir genau überlegen, wie viel Energie Du da reinsteckst. Wenn das Programm sich gut verbreitet, dann ist der KeyGenerator schneller da, als Du gucken kannst. Ich persönlich finde die Strategie "getrennte Demo- und Vollversion" besser, da man dann immer gleich die komplette Vollversion weitergeben bzw. zum Download anbieten muß. Auch das ist natürlich kein Problem, aber je nach Umfang ist die Wahrscheinlichkeit dafür geringer (bzw. es ist somit auch schwerer, die Vollversion irgendwo zu finden).
Eine kluge Möglichkeit ist noch die: Du baust die Überprüfung an mehreren Stellen ein. Die, die direkt nach der Eingabe des Keys greift, bringt eben eine "richtig"- oder "falsch"-Meldung, die anderen sagen aber erstmal nichts. Wenn nun der Cracker die erste Überprüfung aushebelt, kommt die Meldung, daß korrekt registriert wurde, er testet noch ein bißchen rum, und denkt dann, daß der Crack funktioniert hat. Dann verteilt er das Programm.
Deine restlichen Überprüfungen, die irgendwann auftreten, z.B. wenn jemand speichern will, geben erstmal keine Meldung aus, aber z.B. nach dem 10. Aufruf werden sie dann tatsächlich aktiv und bringen irgendeine wirre Meldung mit einem Fehlercode (der sonst nirgends auftaucht). Am besten faselst Du dann was von Dateiverlust und daß der Benutzer sich am besten per eMail bei Dir melden soll, um den Fehler zu beheben. Wenn der ahnungslose Benutzer das tut (und er weiß ja nicht, daß das mit dem Crack zu tun hat, sondern er denkt einfach nur, es sei ein Fehler aufgetreten), und Dir den FehlerCode schickt, dann weißt Du, daß er eine gecrackte Version besitzt und kannst ihm sagen, daß er sich bitte ordnungsgemäß registrieren soll. Wenn er ein schlechtes Gewissen hat, wird er das vielleicht sogar tun. Und wenn nicht, dann brauchst Du ihm auch nicht weiterhin Support zu bieten (z.B. kannst Du ja dafür sorgen, daß die Daten tatsächlich "zerstört" werden, aber Du kannst ihm anbieten, sie wiederherzustellen, was Du aber nur tust, wenn er sich registrieren läßt).