Windows (XP, Vista und 7) Lizenzschlüssel auslesen (und ggf. Office)
Aloha alle zusammen,
das folgende Skript stammt, wenn ich mich recht erinnere von dieser Seite, jedoch findet man dieses im Internet nur als XP_KEY_FINDER.vbs, daher dies noch einmal als Tipp hier, weil es auch bis Windows 7 funktioniert
Das folgende VisualBasicScript liest aus der Registry
Da wie bereits geschrieben, das Skript im Internet nur unter einem anderen Suchbegriff zu finden ist und nicht jeder irgendwelche externen tools (egal ob portable oder zu installieren) nutzen möchte, poste ich dieses Skript mit einer kleinen Erweiterung und dem Kommentar, dass es nicht nur - wie ursprünglich vorgesehen - unter Windows XP arbeitet, sondern auch Windows Vista und Windows 7.
Zum Ausführen eines VBS muss in der Registry
Kopiert den Code, erstellt eine neue Textdatei und benennt sie z.B.
Für genauere Nachfragen, was dort wie geschieht, kann ich euch jedoch nicht zur Verfügung stehen, da mein Wissen in VB & VBS nicht sehr ausgeprägt ist
Nachtrag
Das Ganze funktioniert auch für installierte Office-Pakete.
Wenn man den Registrypfad zum Beispiel als
setzt (muss natürlich für die Officeversion angepasst werden - oder man entwickelt eine Abfrage / Suche per VBS nach diesem Schlüssel), lässt sich mit dem Skript auch der Office-Lizenzschlüssel auslesen.
64-bit Systeme & 32-bit Office
Bei Windows 7 x64 (evtl. auch Vista x64 und XP x64? ungetestet) liegt der Office-Wert bei
(hier 2007 Office)
Office 2010
Es scheint, als würde der
Wenn jemand weiß, wo genau der Wert hinterlegt ist, dann schreibt einen Kommentar dazu, danke.
greetz André
P.S.: Auch wenn es ein Skript ist, habe ich es bewusst nicht in den Programmiersprachenbereich geschoben, da ich der Meinung bin, das Auslesen des Lizenzschlüssels passt eher zum allgemeineren Bereich Windows
edit: bastlas berechtigte Frage als Kommentar eingepflegt, natürlich lässt sich auch
zum Beispiel verwenden
das folgende Skript stammt, wenn ich mich recht erinnere von dieser Seite, jedoch findet man dieses im Internet nur als XP_KEY_FINDER.vbs, daher dies noch einmal als Tipp hier, weil es auch bis Windows 7 funktioniert
Das folgende VisualBasicScript liest aus der Registry
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
(ja, existiert sogar unter Windows 7) den Wert DigitalProductId
aus und stellt die HEX-Werte anhand der niedergeschriebenen Tabelle (wenn man es so nennen möchte) ihren zugehörigen Ziffern entgegen.Da wie bereits geschrieben, das Skript im Internet nur unter einem anderen Suchbegriff zu finden ist und nicht jeder irgendwelche externen tools (egal ob portable oder zu installieren) nutzen möchte, poste ich dieses Skript mit einer kleinen Erweiterung und dem Kommentar, dass es nicht nur - wie ursprünglich vorgesehen - unter Windows XP arbeitet, sondern auch Windows Vista und Windows 7.
Zum Ausführen eines VBS muss in der Registry
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Script Host\Settings
der Wert Enabled
auf 1
stehen, damit der Scripting Host aktiviert ist (default sollte 1 sein).Set WshShell = WScript.CreateObject("WScript.Shell")
HexBuf = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")
For l = lBound(HexBuf) to uBound(HexBuf)
next
StartOffset = 52
EndOffset = 67
Dim Digits (24)
Digits (0) = "B" : Digits (1) = "C": Digits (2) = "D": Digits (3) = "F":
Digits (4) = "G": Digits (5) = "H": Digits (6) = "J": Digits (7) = "K":
Digits (8) = "M": Digits (9) = "P": Digits (10) = "Q": Digits (11) = "R":
Digits (12) = "T": Digits (13) = "V": Digits (14) = "W": Digits (15) = "X":
Digits (16) = "Y": Digits (17) = "2": Digits (18) = "3": Digits (19) = "4":
Digits (20) = "6" : Digits (21) = "7" : Digits (22) = "8": Digits (23) = "9"
dLen = 29
sLen = 15
Dim HexDigitalPID (15)
Dim Des (30)
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
next
'Zur Berechnung werden die Bytes 52 bis 66 verwendet
KEYSTRING =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
Des (i) = "-"
KEYSTRING =KEYSTRING & "-"
else
HN = 0
For N = (sLen -1) to 0 step -1
Value = ( (HN *2^8 ) Or HexDigitalPID (N))
HexDigitalPID (N) = Value \ 24
HN = (Value mod 24)
next
Des(i) = Digits(HN)
KEYSTRING =KEYSTRING & Digits(HN)
end if
next
KEYSTRING2 = StrReverse (KEYSTRING)
WScript.Echo "Der Windows Lizenzschlüssel lautet :" & _
" " & KEYSTRING2
'Die folgenden Zeilen dienen dazu, den Lizenzschlüssen mit Benutzernamen in eine Datei zu schreiben (bsp. im Netzwerk - hier auch ohne Dateiendung)
datei = "\\SERVER\Freigabe\Ordner\Serials"
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(datei,8,true)
Set objNetwork = wscript.CreateObject("wscript.network")
oFile.WriteLine KEYSTRING2 & " | " & objNetwork.Username 'für den COMPUTERNAME einfach objNetwork.Computername nutzen
oFile.close
Kopiert den Code, erstellt eine neue Textdatei und benennt sie z.B.
Windows_Keyfinder.vbs
, achtet auf die Endung .vbs (dazu solltet ihr die Dateiendungen eingeblendet haben)Für genauere Nachfragen, was dort wie geschieht, kann ich euch jedoch nicht zur Verfügung stehen, da mein Wissen in VB & VBS nicht sehr ausgeprägt ist
Nachtrag
Das Ganze funktioniert auch für installierte Office-Pakete.
Wenn man den Registrypfad zum Beispiel als
HexBuf = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Office\12.0\Registration\{91120000-002F-0000-0000-0000000FF1CE}\DigitalProductId")
64-bit Systeme & 32-bit Office
Bei Windows 7 x64 (evtl. auch Vista x64 und XP x64? ungetestet) liegt der Office-Wert bei
"HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Registration\{91120000-002F-0000-0000-0000000FF1CE}\DigitalProductId"
Office 2010
Es scheint, als würde der
DigitalProductId
-Wert unter Office 2010 (14.0) nicht mehr an bekannter Stelle hinterlegt sein und auch nicht unter DigitalProductId
laufen.Wenn jemand weiß, wo genau der Wert hinterlegt ist, dann schreibt einen Kommentar dazu, danke.
greetz André
P.S.: Auch wenn es ein Skript ist, habe ich es bewusst nicht in den Programmiersprachenbereich geschoben, da ich der Meinung bin, das Auslesen des Lizenzschlüssels passt eher zum allgemeineren Bereich Windows
edit: bastlas berechtigte Frage als Kommentar eingepflegt, natürlich lässt sich auch
objNetwork.Computername
verwenden, entweder Username
ersetzen oder wenn gewollt komplett alsoFile.WriteLine KEYSTRING2 & " | " & objNetwork.Username & " | " & objNetwork.Computername
Please also mark the comments that contributed to the solution of the article
Content-ID: 172118
Url: https://administrator.de/contentid/172118
Printed on: December 3, 2024 at 12:12 o'clock
2 Comments
Latest comment