ich brauche irgendeine Funktion, mit der ich einen Rechner oder eine Windows-Installation in Delhpi möglichst eindeutig bestimmen kann. Z.B. Board oder Festplatten-ID, da wir unsere Software beim Kunden einrichten und auf diesen Rechner fixieren wollen. Die Windows-OEM-Nummer o.ä. will ich nicht benutzen. Auch die MAC-Adresse der Netzwerkkarte kann ich nicht nutzen, da ich nicht auf jedem Rechner eine Netzwerkkarte finde.
procedure TForm1.Button1Click(Sender: TObject);
var
SerialNum : pDWord;
a, b : DWord;
Buffer : array [0..255] of char;
begin
if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then
Label1.Caption := IntToStr(SerialNum^);
end;
Wenn ich das richtig verstehe geht es hier um Rechner die von dir aufgebaut werden. Dann kannst ja einfach an einer definierten Stelle (zb \windows) ein file ablegen, daß einen eindeutigen Schlüssel enthält. Schon ist die Sache gegessen.
Natürlich darf der Rechnernutzer dieses File nicht löschen, aber irgendwas is ja immer.
Ich möchte ja nicht als Spielverderber auftreten, aber leider ist das nicht so einfach bei einem PC was eineindeutiges hinzubekommen. Ich kann da konkret auch leider nichts beisteuern ausser auf ein paar Probleme hinzuweisen
Board-id: nur solange von Nutzen, wie kein neues Board installiert wird. Nach einer Aufrüstung des Rechners würde eine neue Lizenznummer fällig
Festplatten-ID: direkt abhaken. In grösseren Unternehmen ist es durchaus üblich, dass Rechner-Installationen mit einem Image eines „Standard“ Rechners erstellt werden. Dabei wird in der Regel die Festplatten-ID des Image-Rechner an alle davon erstellten Rechner weitergegeben. Daraus folgt: alle Platten haben dieselbe ID.
Windows-OEM-Nummer: siehe Festplatten ID
MAC-Adresse: wäre der sicher der beste Weg. Leider aber nicht immer sicher. Im Falle des Austausches -> siehe Board-ID bzw. nicht vernetzte PCs Rechner haben keine MAC.
Eine der sichereren Methoden wäre da ein Dongle, aber vermutlich wäre das mit Kanonen auf Spatzen geschossen.