Meine Lösung, die an alleinherrscher''s Vorschlag angelehnt ist:
Mein Vorschlag: 2 Programme
1. Generierung der ID
2. Hauptprogramm
Vorteil zu alleinherrscher's Idee: Es gibt keine Datei(en) die gelöscht oder modifiziert werden können.
Zu Beginn sendest du deinem Kunden folgendes Programm:
Das Programm liest mehrere einzigartige Werte des Computers aus, z.B. Die HDD Serial und die CPU Serial (kann man beliebig erweitern).
Aus den beiden Werten berechnest du mit einem frei wählbarem Algorithmus (z.B. MD5) einen Wert. Dieser Wert wird dir, auf welcher Weise auch immer, sei es durch E-Mail vom Kunden oder automatischer Versand durch das Programm an einen deiner Server, zugesandt.
So nun zum 2. Teil: Du "baust" diese gerade generierte ID in das Hauptprogramm ein (als verschlüsselter String). Jedes mal wenn dein Kunde das Hauptprogramm startet, werden vom Hauptprogramm diese 2 Werte ausgelesen und mit deinem Algo verrechnet. Wenn der "eingebaute" Wert und der vom Algo generierte Wert übereinstimmen, startet das Programm, ansonsten quittiert es seinen Dienst.
Als Modifikation kannst du eine Internetverbindung aufbauen lassen, bei der das Programm die ID an einen Server schickt, der dann überprüft ob dieser Computer dafür lizenziert ist. Vorteil: Der Algo bleibt dem Benutzer verborgen.
Nachteil ALLER Kopierschütze (plural?^^): Sie können von einem Cracker ausgehebelt, bzw modifiziert werden, so dass diese nutzlos werden. Es gibt Programme, die dies zu verhindern versuchen, indem sie dein komplettes Programm verschlüsseln und mit komplexen Methoden aufrufen. (TheMida, etc..). Daran werden sich Hobbycracker zwar die Zähne ausbeißen, aber es bietet trotzdem keinen 100% Schutz.
Fazit: Es gibt keine 100% sichere Kopierschutzsoftware
Man kann denen, die versuchen deinen Kopierschutz auszuhebeln, nur Steine in den Weg legen.
Edit: Angel4585 war mit einem fast ähnlichem Vorschlag schneller