Autor Beitrag
immortuus
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mi 13.06.07 09:39 
Ich habe das Problem das ich eine HardwareID benötige. Diese muss pro PC Eindeutig sein.

Am liebsten würde ich die Microsoft HardwareID verwenden, da hab ich mich dann ein wenig schlau gemacht. Die MS Aktivierung besteht aus zwei Teilen wer es nachlesen möchte (download.microsoft.c...3a83f0e/reportdt.pdf ) im Abschnitt INSTALLATIONS-ID steht alles.

Ich hab mich natürlich schon nach anderen Dingen umgeschaut wie z.B. die MAC Adresse oder die Seriennummer der HDD, ich hätte aber gerne die MS HardwareID.

Überall findet man die info das die MS Aktivierung aus zwei Teilen besteht nämlich aus der ProduktID (CD Key) und der HardwareID.

Aber nirgends steht wie ich die HardwareID auslesen kann.
Hat einer von euch eine Idee wie das geht?
immortuus Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mi 13.06.07 09:57 
Was haltet ihr von der WMI Kalsse: Win32_LUID

ist die dafür geeignet?
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Sa 01.09.07 08:41 
benötige auch diese ID, welche auch immer das ist.
Es gibt sicher eine ID die auf jedem PC anders ist.
Erste Frage: Wie heisst diese ID.
Zweite Frage: Wie lese ich diese aus?

Danke
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Sa 01.09.07 09:09 
Das was ich bisher rausgefunden habe ist folgendes:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
implementation

{$R *.nfm}

procedure form.FormCreate(Sender: TObject);
begin
   // Hier wird der Computername ausgegeben
   lbShowPCName.Caption := GetEnvironmentVariable('ComputerName');

   // Hier wird der Benutzname im Betriebssystem ausgelesen
   //lbShowUserName.Caption := GetEnvironmentVariable('Username');

   // Festplattenbezeichung wo Windows läuft (z.B. 'C:')
   //lbShowUserName.Caption := GetEnvironmentVariable('systemdrive');

   // Hier wird der Pfad für das Benutzerprofil ausgeselen (z.B. 'C:\Users\Administrator')
   //lbShowUserName.Caption := GetEnvironmentVariable('USERPROFILE');

   // Hier wird ausgelesen, wo sich der Programmordner befindet (z.B. 'C:\programme')
   //lbShowUserName.Caption := GetEnvironmentVariable('ProgramFiles');

   // Hier wird ausgelesen, wo sich der Windows Ordner befindet (z.B. 'C:\Windows')
   //lbShowUserName.Caption := GetEnvironmentVariable('WINDIR');

   // Hier wird ausgelesen, wo sich der Order für die Temporären Files befindet (z.B. 'C:\Users\Admin\AppData\Local\Temp')
   //lbShowUserName.Caption := GetEnvironmentVariable('TEMP');

   // Systemroot  (z.B. 'C:\Windows')
   //lbShowUserName.Caption := GetEnvironmentVariable('SystemRoot');

   // Hier wird ausgelesen wieviel Bit dein PC hat (z.B. 'x86' = 32bit)
   //lbShowUserName.Caption := GetEnvironmentVariable('PROCESSOR_ARCHITECTURE');

   // Anzahl von Prozessoren (z.b. '4')
   //lbShowUserName.Caption := GetEnvironmentVariable('NUMBER_OF_PROCESSORS');

   // Keine Ahnung was er hier genau ausliest aber das kommt heraus: C:\Windows\system32\cmd.exe
   //lbShowUserName.Caption := GetEnvironmentVariable('COMSPEC');

   // Hier wird bei mir das gleiche ausgegeben wie der Computername, obs auch das gleiche ist? Keine Ahnung
   //lbShowUserName.Caption := GetEnvironmentVariable('USERDOMAIN');

   // Das muss ich jetzt nicht verstehen, ich code auf einem Vista-Rechner und bei dieser Variabel kommt 'WindowsNT'  raus.
   //lbShowUserName.Caption := GetEnvironmentVariable('OS');

   // Auch diese Ergebnis verstehe ich nicht, hier bekomm ich '0f07'
   //lbShowUserName.Caption := GetEnvironmentVariable('PROCESSOR_REVISION');

end;

end.


^^
Ein paar Profis von euch können sicher ein zwei Fragen davon beantworten ;)

Bitte auch den Post darüber beachten
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Sa 01.09.07 12:11 
Also der Computername ist ganz sicher nicht eindeutig...
Die MAC der Netzwerkkarte sollte theoretisch eindeutig sein, was aber auch nicht immer so ist.
Die Produkt-ID vom Windows (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProductID) wäre auch eine Möglichkeit, die sollte eigentlich pro Windows-Installation identisch sein. Das ist aber NICHT der CD-Key. Die würde ich nehmen, das reicht doch eigentlich schon. Wozu brauchst du denn dann noch diese Hardware-ID.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Sa 01.09.07 12:53 
Ûnd wie lese ich diese aus?
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Sa 01.09.07 13:01 
user profile iconmexx2k hat folgendes geschrieben:
Ûnd wie lese ich diese aus?


user profile iconTimosch hat folgendes geschrieben:

Die Produkt-ID vom Windows (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProductID)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Sa 01.09.07 13:25 
achso, wird dann also nicht in irgendeiner umgebungsvariable gespeichert?
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Sa 01.09.07 14:18 
Wie man der Ausgabe des SET-Befehls (alternativ Systemsteuerung->System->Erweitert->Umgebungsvariablen, aber set ist schneller...) entnehmen kann, nein.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Sa 01.09.07 15:06 
Ich würd sagen für die DAU´s und newbies unter uns wäre es nett wenn einer von euch Profis ein;zwei ZeilenDelphi-Code Poste kann, wie man diese umgebungsvariable in eine normale Stringvariable bekommt ;)
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Sa 01.09.07 15:20 
user profile iconmexx2k hat folgendes geschrieben:
Ich würd sagen für die DAU´s und newbies unter uns wäre es nett wenn einer von euch Profis ein;zwei ZeilenDelphi-Code Poste kann, wie man diese umgebungsvariable in eine normale Stringvariable bekommt ;)

Wie ich schon sagte: Es ist keine Umgebungsvariable. Die Product-ID steht in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProductID. Und wie man Registry-Einträge ausliest, kann man der Delphi-Hilfe entnehmen. (TRegistry...)

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Mo 03.09.07 10:09 
Also nochmal für alle, die eine eindeutige ID bzw. einen eindeutigen Code eines Computers benötigen.
Ich denke einer der eindeutigsten Sachen ist die FestplattenID, welche sich natürlich nur ändert, wenn man eine andere Festplatte benutzt.

So kann man diese Auslesen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.FormCreate(Sender: TObject);
var
  pRootPathName:        Array[0..MAX_PATH] of Char;
  pVolumeNameBuffer:      Array[0..MAX_PATH] of Char;
  iVolumeSerialNumber:    Cardinal;

  iMaximumComponentLength:   DWORD;
  iFileSystemFlags:       DWORD;

  cc : Cardinal;

begin

  cc := 0;
  pRootPathName := 'X:\';  // Welche Festplatte soll ausgelesen werden
  GetVolumeInformation( pRootPathName,pVolumeNameBuffer,Sizeof(pVolumeNameBuffer)-1,@iVolumeSerialNumber,iMaximumComponentLength,iFileSystemFlags,nil,0 );
  cc := iVolumeSerialNumber;
  ShowMessage(Format('%.8x', [cc]));   // achstellig, lässt sich auch 12stellig oder höher ausgeben

end;


Bei der Bestimmung, welche Festplatte hergenommen werden soll, hab ich noch einen kleinen Tipp:
Ich persönlich würde auslesen, auf welcher Festplatte das Betriebssystem(Windows) installiert ist. Und so wird das gemacht:
ausblenden Delphi-Quelltext
1:
sString := GetEnvironmentVariable('systemdrive');					
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 03.09.07 10:44 
Moin!

user profile iconmexx2k hat folgendes geschrieben:
Also nochmal für alle, die eine eindeutige ID bzw. einen eindeutigen Code eines Computers benötigen.
Ich denke einer der eindeutigsten Sachen ist die FestplattenID

:|

Wie user profile iconTimosch bereits sagte, lies die ProductID aus der Registry und bilde von dem kompletten Binärblock z.B. einen MD5-Hash (kannst auch vorer noch die SystemDrive-Serial und den Hostnamen drauftun, wenn du magst). DAS würde ich dann als halbwegs brauchbaren Hardware-Hash bezeichnen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Mo 03.09.07 10:48 
naja, nur wenn du formatierst und ein anderes betriebssystem nimmst, bzw. nur eine andere lizenz, dann ändert sich ja auch diese Produktid.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 03.09.07 10:51 
user profile iconTimosch hat folgendes geschrieben:
Die Produkt-ID vom Windows (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ProductID) wäre auch eine Möglichkeit, die sollte eigentlich pro Windows-Installation identisch sein. Das ist aber NICHT der CD-Key.

_________________
There are 10 types of people - those who understand binary and those who don´t.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 03.09.07 10:52 
user profile iconmexx2k hat folgendes geschrieben:
Ich denke einer der eindeutigsten Sachen ist die FestplattenID, welche sich natürlich nur ändert, wenn man eine andere Festplatte benutzt.

Eindeutig vielleicht, aber nicht sehr beständig. Einmal formatiert und du hast eine neue.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 03.09.07 13:42 
@Luckie: Nicht nur das: Da ich regelmäßig meine Laufwerke clone und inzwischen auch weiß, wie man eine Systempartition in einem NEUEN Rechner zum Laufen bekommt, könnte ich das Programm problemlos auf einen anderen Rechner ziehen (sofern die HW halbwegs kompatibel ist.

Ferner ist zu Beachten, dass Festplatten-ID <> VolumeID ist. Du liest die VolumeID aus, die mit jedem halbwegs brauchbaren Hexeditor in <1 Minute geändert ist. Die Festplatten-ID ist die Hardware-Seriennummer (IMHO) und da sieht es schon komplizierter aus.

Hier im DF gibt es GENUG Diskussionen, zum Thema Hardware-IDs, wo nahezu ALLE zur Aussage bringen, dass eine HW-ID nicht wirklich eindeutig ist ODER zu enormen Nachteilen beim Kunde führt, so dass es den Aufwand nicht lohnt. Warum sind hier dennoch IMMER WIEDER Leute der Meinung, Zeit auf eine Funktion verschwenden zu müssen, die eh nichts bringt, außer Nachteile, anstatt diese Zeit in ordentliche Funktionen zu investieren, damit man den Anreiz für eine legale Version erhöht?

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mo 03.09.07 15:41 
@BenBE: :zustimm:

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
mexx2k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Mo 03.09.07 16:29 
Naja Zeit verschwenden ist vielleicht nicht der richtige Ausdruck für meine Bemühungen.
Ich beschäftige mich erst seit ein paar Tagen mit dem Thema "eindeutige ID" und wusste halt z.b. nicht, dass sich diese ID beim formatieren ändert. Ausserdem, glaube ich nicht, dass Hausfrauencomputerbesitzer sich mit Hexeditoren etc. auskennen ;)
Aber darum gehts ja nicht.
Bin halt noch nicht allzu frisch auf diesem Gebiet.
Delphiturbo
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 01.11.07 02:55 
user profile iconNarses hat folgendes geschrieben:
Moin!

user profile iconmexx2k hat folgendes geschrieben:
Also nochmal für alle, die eine eindeutige ID bzw. einen eindeutigen Code eines Computers benötigen.
Ich denke einer der eindeutigsten Sachen ist die FestplattenID

:|

Wie user profile iconTimosch bereits sagte, lies die ProductID aus der Registry und bilde von dem kompletten Binärblock z.B. einen MD5-Hash (kannst auch vorer noch die SystemDrive-Serial und den Hostnamen drauftun, wenn du magst). DAS würde ich dann als halbwegs brauchbaren Hardware-Hash bezeichnen. :idea:

cu
Narses


Wie kann ich MD5 verwenden um meine Anwendung mit Username (ID) + Passwort schutzen?
Wo kann ich die Komponenten downloaden?
hier in der Autor Seite ist die Installation nicht erklärt :
www.cityinthesky.co.uk/cryptography.html