![]() |
Windows Vista hat keine Produkt ID mehr?
Hi@all. Auf der Suche nach einem halbwegs guten Kriterium, um einen Rechner "eindeutig" zu identifizieren (ich weiß, das geht nicht, bitte keine Grundsatzdiskussion an dieser Stelle), bin ich durch Suchen im Forum auf die Windows ID aufmerksam geworden. Diese findet man unter Windows XP in der Registry, weshalb ich mir eine kleine Funktion gebastelt habe:
Delphi-Quellcode:
Leider existiert der Eintrag "ProductID" unter Windows Vista nicht mehr in diesem Verzeichnis. Hat Vista keine ProductID mehr, oder ist diese einfach woanders zu finden? Gibt es evtl eine API Funktion, um die Nummer Betriebsystemunabhängig auszulesen?
function TForm1.GetWindowsID:string;
var Reg:TRegistry; begin try Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion', false); result := Reg.ReadString('ProductID'); except result := 'Unknown'; end; end; Grüße und besten Dank, Euer Michael |
Re: Windows Vista hat keine Produkt ID mehr?
hallo alleinherrscher
guck mal hier: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion dort gibts was du suchst... lg paperboy ps: und es sollte über die Windows Management Instrumentation (WMI) möglich sein die ProductID zu bekommen... |
Re: Windows Vista hat keine Produkt ID mehr?
Sein Schlüssel ist schon ganz korrekt, ich vermute eher, dass er versucht mit einem 32 Bit Programm auf einem 64 Bit OS diesen Schlüssel zu lesen. Der existiert nicht in der 32 Bit Registry, von daher müsste er die entsprechenden Flags beim anlegen des Registry Objektes mitgeben.
|
Re: Windows Vista hat keine Produkt ID mehr?
Zitat:
|
Re: Windows Vista hat keine Produkt ID mehr?
Zitat:
Delphi-Quellcode:
TRegistry.Create(KEY_READ OR KEY_WOW64_64KEY);
|
Re: Windows Vista hat keine Produkt ID mehr?
Zitat:
Sein Schlüssel ist korrekt? Also mein Vista (32-Bit) hat keinen ProductID Eintrag unter
Delphi-Quellcode:
nur unter:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Delphi-Quellcode:
Hast du es denn mal versucht mit dem Pfad alleinherrscher?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
|
Re: Windows Vista hat keine Produkt ID mehr?
Das ganze ist unter Windows 7 offensichtlich auch nicht mehr so einfach. Mit den folgenden Routinen kann man aber den CD-Key auslesen:
Delphi-Quellcode:
function GetDigitalProductId: TBytes;
const cRegPath = 'Software\Microsoft\Windows NT\CurrentVersion'; cRegKey = 'DigitalProductId'; var bufSize: Integer; reg: TRegistry; begin result := nil; reg := TRegistry.Create(KEY_READ OR KEY_WOW64_64KEY); try reg.RootKey := HKEY_LOCAL_MACHINE; if reg.OpenKeyReadOnly(cRegPath) then begin try if reg.ValueExists(cRegKey) then begin bufSize := reg.GetDataSize(cRegKey); if bufSize > 0 then begin SetLength(result, bufSize); reg.ReadBinaryData(cRegKey, result[0], bufSize); end; end; finally reg.CloseKey; end; end; finally reg.Free; end; end; function GetWindowsCDKey: string; const cChars = 'BCDFGHJKMPQRTVWXY2346789'; var tmp: TBytes; buffer: TBytes; Current: Integer; I: Integer; N: Integer; K: Integer; begin result := ''; SetLength(tmp, 15); buffer := GetDigitalProductId; if Length(buffer) > 66 then begin for I := 52 to 66 do tmp[I - 52] := buffer[I]; result := ''; for N := 0 to 24 do begin Current := 0; for K := Length(tmp) - 1 downto 0 do begin Current := (Current * 256) xor tmp[K]; tmp[k] := (Current div 24) and $FF; Current := Current mod 24; end; Inc(Current); result := cChars[Current] + result; end; for I := (Length(result) - 1) div 5 downto 1 do Insert('-', result, 5*I + 1); end; end; |
AW: Windows Vista hat keine Produkt ID mehr?
und wie findet man den Office Key?
Gruss Mc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz