Hallo Neuni,
wenn Dein Programm für Freunde (?) ist, dann sollte doch eine leichte Sperre genügen. Es geht ja wohl darum, daß Dein Programm nicht einfach beliebig weiter gegeben wird.
Für welche Nummer Du Dich entscheidest, ist Deinen persönlichen Vorlieben überlassen. Ich benutze folgendes:
Code:
function GetSerialNumber(Drive: PChar): DWord;
var
FileSysName, VolName: array[0..255] of Char;
SerialNum, MaxCLength, FileSysFlag: DWORD;
i : integer;
begin
GetVolumeInformation(Drive, VolName, 255, @SerialNum, MaxCLength, FileSysFlag, FileSysName, 255);
Result := SerialNum;
end;
//Anwendung:
sernr := GetVolumeInformation('C:\');
Anschließend kannst Du die gewählte Nummer nach irgend einem Schema verändern (XOR, OR, AND, SHL, SHR), das Du Dir nach belieben ausdenken kannst, und daraus einen Schlüssel bilden, den Du in eine Datei (z.B. INI) speicherst. Den Algorithmus mußt Du natürlich in Dein Programm implementieren und wenn es (Dein Programm) beim Start aus der aktuellen Seriennummer (welche auch immer) einen mit dem Vergleichs-String übereinstimmende Zeichenkette bildeten kann, dann ist der Nutzer zum Nutzen des Programms berechtigt.
Deine Freunde erhalten ja sowieso wieder eine Freigabe von Dir, wenn sich die zu grunde gelegte Serien-Nummer ändert, und ein Hacker läßt sich durch einen einfachen Schutz eh nicht aufhalten.
Die Diskussion von tobster und dizzy, welche Nummer sich wie leicht ändern läßt dürfte hier uninteressant sein, da Du ja sicherlich niemanden sagst, auf welcher Basis Du Deinen Freigabe-String generierst.
mfg
eddy