Pomysły na Hardware ID

0

Witam.

Co można zczytywać z PC jako unikalny numer komputera? Swego czasu używałem czegoś takiego:

function GetSerialHDD(Drive: String): Integer;
var
  root, name, system: string;
  flags, length: cardinal;
  serial: pdword;
  numer_seryjny: integer;
begin
  SetLength(name,50);
  SetLength(system,50);
  New(serial);
  root:=drive+'\';
  GetVolumeInformation(PChar(root),PChar(name),50,serial,length,flags,PChar(system),50);
  numer_seryjny:=serial^;
  Dispose(serial);
  Result := numer_seryjny;
end;

(funkcja znaleziona w necie, nie pisałem jej)

Czy jest coś lepszego? Jakoś mi to nie do końca odpowiada, wyrzuca na dodatek ujemne liczby.

Szukam czegoś nowszego, tak żeby funkcja wyrzucała mi do 20 cyfr, co można zczytywać? Tak żeby działało na każdym PC niezależnie od lokalizacji, języka, systemu, musi to działać na każdym kompie z Windowsem (od XP w górę).

0

ID na podsawie partycji (bo to nawet nie jest ID dysku tylko partycji) to wg mnie bardzo zły pomysł. Wystarczy np. zmienić rozmiar partycji (co mi się parę razy ostatnio zdarzyło) i już zmieni się ID. Lepiej wziąć pod uwagę płytę główną, procesor i z tego wygenerować ID. Tu masz parę linków jak się do tego zabrać https://www.google.pl/search?q=delphi+get+hardware+id

1 użytkowników online, w tym zalogowanych: 0, gości: 1