BigBastis Blog

Den Office Lizenzschlüssel aus der Registry auslesen

Introduction

user

Sebastian Gross

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.NET

Den Office Lizenzschlüssel aus der Registry auslesen

Posted on .

Bei einem Praktikum hat man mir mal die Aufgabe gestellt alle Office (und noch andere) Schlüssel zu Katalogisieren, um zu sehen ob irgendwelche Schlüssel doppelt verwendet werden und ob noch weitere Lizenzen von Nöten sind!

Diese Aufgabe würde sich als sehr Zeitaufwendig herausstellen, da es mehr als 100 Rechner inklusive Laptops in der Firma gibt. Alle aufzufinden, inbesondere die Laptops war dann nicht mehr ganz einfach!

Deswegen habe ich mich dafür entschieden ein kleines Programm zu erstellen, dass für mich den KEY ausließt und ihn für mich Lokal auf einem Freigegebenen Laufwerk speichert! Dabei habe ich die Startscripts auf dem Server so modifiziert, dass mein Programm bei den Start von Windows einmal ausgeführt wird und nach installierten Office Version sucht!

So muss ich nicht durch die ganze Firma rennen und die Leute belästigen und habe gleich eine gute Übersicht!

Schlüsselstandort

Wo ist der Schlüssel eigentlich gespeichert? Wie so ziemlich alles bei Windows in der Registry, nämlich hier:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Registration

Wie Sven in den Kommentaren korrekt anmerkt, befindet sich der Schlüssel auf moderneren Windows Systemen (64Bit) an einem etwas anderen Ort:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration

Schlüssel-Standort
DigitalProductID

Enthält den ‚verschlüsselten‘ Schlüssel

Der Ordner Registration teilt sich dann je nach Installation in noch mehrere Unterordner auf, die aus einer ID der Installation bestehen. In diesen Ordnern gibt es den Schlüssel DigitalProductID die die Seriennummer enthält!

Doch leider ist diese Seriennummer nicht im Klartext gespeichert, sondern im Hexadezimalen Zahlensystem, weswegen wir das erst einmal umwandeln müssen!

Die Umwandlung

Übrigens in dem oben angegebenen Registry Pfad steht die 12.0 für die Office Version in diesem Fall ist es Office 2007. 2003 hätte dann entsprechend eine 11 dort stehen usw…

Diese Funktion wird für uns die Konvertierung vornehmen. Ich werde diese jetzt nicht auseinander nehmen, da sie im Grunde ein Zahlensystem in ein anderes konvertiert. Das besondere Hier ist, dass es in den Office Keys immer nur die gleichen paar Buchstaben gibt! Nämlich: B, D, D, F, G, H, J, K, M, P, Q, R, T, V, W X und die Zahlen 2, 3, 4, 6, 7, 8, 9. Warum das so ist weis ich leider auch nicht, darauf muss man bei der Konvertierung aber achten!

    Function Reg(ByVal hexbuf() As Byte)
        Dim tmp As String

        For l = LBound(hexbuf) To UBound(hexbuf)
            tmp = tmp  & "" & Hex(hexbuf(l))
        Next
        Dim StartOffset As Integer = 52
        Dim EndOffset As Integer = 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"

        Dim dLen As Integer = 29
        Dim sLen As Integer = 15
        Dim HexDigitalPID(15)
        Dim Des(30)

        Dim tmp2 As String
        Dim HN As Integer
        Dim Value As Integer
        Dim KEYSTRING2 As String

        For i As Integer = StartOffset To EndOffset
            HexDigitalPID(i - StartOffset) = hexbuf(i)
            tmp2 = tmp2 & " " & Hex(HexDigitalPID(i - StartOffset))
        Next
        Dim KEYSTRING As String = ""
        For i = dLen - 1 To 0 Step -1
            If ((i + 1) Mod 6) = 0 Then
                Des(i) = "-"
                KEYSTRING = KEYSTRING & "-"
            Else
                HN = 0
                For N As Integer = (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)

        Return KEYSTRING2
    End Function

Diese Funktion erwartet einen Parameter zur Ausführung, nämlich hexbuf() as Byte also einen Byte Array! den bekommen wir in dem wir einen Wert aus der Registry auslesen, und zwar einen REG_BINARY Wert!

Diese Funktion stammt nicht von mir, ich habe sie vor einer Weile im Netz gefunden und in VB.NET umgeschrieben.

Einen Wert aus der Registry auszulesen ist mit .NET relativ einfach:

Dim Value() As Byte = My.Computer.Registry.GetValue_
                  ("HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice12.0Registration...", "DigitalProductID", "")

Alle dazu benötigten Funktionen stellt uns der My-Namespace zur Verfügung!

Zusammenfassung

Im Großen und Ganzen wars das schon gewesen! Ich habe diesbezüglich ein kleines Demo – Projekt angefertigt, dass ihr hier herunterladen könnt! In dem Projekt werden alle eure Office Keys ausgelesen, da oftmalls Outlook einen anderen KEY hat als der Rest usw… Das kann man daran erkennen, dass in dem Ordner Registration mehrere Unterordner gibt, die aus einer langen Zahl bestehen, welche auf jedem Computer anders ist! – Ihr müsst ledeglich die Version anpassen, im meinem Beispiel wird der KEY von Office 2007 ausgelesen. Also Version 12!

Hat dieser Beitrag dir geholfen? Hattest du Probleme oder hast du Anregungen? Schreib dann bitte einen Kommentar.

Hier gibts das Demo-Projekt: Office Key Finder – Demo Projekt

Hier könnt ihr euch das komplette kostenlose Programm zum auslesen vom Windows & Office Key herunterladen. (English & Deutsch)

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.

Comments
user

Author ich

Posted at 13:12 8. August 2010.

KLAPPT NICHTMEHR SEIT

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration

Siehe nicht 12.0 sondern 14.0!

liest falschen key aus

user

Author Heinrich

Posted at 20:53 16. Dezember 2010.

Danke für den netten Artikel. Coole Sache.

Ohne meckern zu wollen, du hast da noch paar Tippfehler drin. 😉

Aber macht nichts, passiert mir auch…

user

Author Max

Posted at 22:44 28. Dezember 2010.

Danke für das Tool. Hat mir für die Installation des neuen Rechners geholfen 😉

user

Author 2daniel

Posted at 13:47 2. Januar 2011.

Cooles Tool! gut gemacht!

user

Author Lacose

Posted at 14:14 22. August 2011.

Super Tool!

kannst du mir evtl erklären was die Zeile „Dim KEYSTRING As String = „“
33 For i = dLen – 1 To 0 Step -1
34 If ((i + 1) Mod 6) = 0 Then
35 Des(i) = „-“
36 KEYSTRING = KEYSTRING & „-“
37 Else
38 HN = 0
39 For N As Integer = (sLen – 1) To 0 Step -1
40 Value = ((HN * 2 ^ 8 ) Or HexDigitalPID(N))
41 HexDigitalPID(N) = Value \ 24
42 HN = (Value Mod 24)
43 Next
44 Des(i) = Digits(HN)
45 KEYSTRING = KEYSTRING & Digits(HN)
46 End If“

Macht? ^^

user

Author Sebastian Gross

Posted at 14:19 22. August 2011.

Hallo Lacose,
dieser Abschnitt wandelt die Zeichenfolde aus dem Hexydezimalen in unsere „Sprache“ um.
Falls du dich wunderst was die ganzen &amp Zeichen sollen, dies macht WordPress von alleine statt den ganzen &s; sollte einfach nur ein „&“ stehen. Schau dir den Beispielcode im Projekt an um das besser zu sehen.
Gruß, sebastian

user

Author Jenny

Posted at 07:14 23. August 2011.

Hey,

ich hab da mal eine Frage: Ich benötige einen Produkt-Key um es vollständig zu installieren, denn ich habe nur eine Testversion drauf bzw. Office 2010 Starter Version.
Wo bekomme ich den Key her??? Leider bin ich kein großer PC Crack…

Vielen Dank für deine Hilfe schon mal…. LG Jenny

user

Author Sebastian Gross

Posted at 07:43 23. August 2011.

Hallo Jenny,
verstehe ich das richtig? Du brauchst einen Schlüssel für Office?
Dann solltest du z.B. hier schauen: http://bit.ly/oZnp2F
Gruß, Sebastian

user

Author Lacose

Posted at 11:20 23. August 2011.

Hallo Sebastian Gross,
danke erstmal für deine antwort 😀
könntest du mir evtl di eumwandlung von den Hex in lesbare schrift etwas näher erklären ich versteh das nicht so ganz
lg Lacose

user

Author Sebastian Gross

Posted at 12:08 23. August 2011.

Hallo Lacose,
das ist kein Thema für den Kommentarbereich, das ist ein sehr oft disskutierte Thema, einfach bei Google eintippen und du wirs haufenweise Anleitungen finden.
Gruß, Sebastian

user

Author GT

Posted at 21:12 27. August 2011.

Hallo Sebastian,

ich habe das komplette Programm runtergeladen, es liest bei mir aber nur den Windows 7 Key aus!? Was mache ich falsch?

Beste Grüße
Gilbert

user

Author Sebastian Gross

Posted at 06:25 29. August 2011.

Hallo GT,
ein paar mehr Informationen wären nett:
– Welches Betriebsystem?, Welche Plattform?
– Welche Office Version, wie wurde diese Installiert?
– OEM, oder Retail Version?

Dein Fehler deutet auf eine fehlerhafte oder modifizierte installation an.

Gruß, Sebastian

user

Author Schlossdiener

Posted at 16:42 5. November 2011.

Hallo Sebastian,
habe das Tool angewendet und für Office 2010 wird eine Key ausgelesen.
Leider wird der Key von Office 2010 nicht als richtig erkannt.
Muss ich etwas ändern oder wo liegt mein Fehler.
Für Deine Hilfe vielen Dank.

Gruß Schlossdiener

user

Author um

Posted at 11:33 7. November 2011.

trotz Anpassung an 14.0 krieg ich nur eine leere Messagbox….

user

Author IT FIAN 85

Posted at 12:49 7. November 2011.

hab das Prog als User gestartet wo ist erkenne ich dann den Key (als .txt oder so)

user

Author IT FIAN 85

Posted at 12:51 7. November 2011.

Anfrage hat sich erledigt

user

Author Lilly

Posted at 19:30 27. November 2011.

Wie geht denn das mit Windows 7? Ich kann zwar bis Office und dann auf 12.0 aber ich komm dann nur noch auf MsoExample und User Settings? Bei mir gibt es keine Registration? Kann mir jemand erklären wie das mit Windows 7 klappt?

user

Author Specter

Posted at 17:07 12. Januar 2012.

Cooles Tool. Danke

user

Author klausi

Posted at 02:19 9. Februar 2012.

Habe mit einem älteren Vaio Office Home and Student 2007 geerbt. Läßt sich dieser Produktkey auslesen?
gruß
klausi

user

Author klausi

Posted at 02:20 9. Februar 2012.

Habe mit einem älteren Vaio Office Home and Student 2007 geerbt.
Läßt sich dieser Produktkey auslesen?
Gruß
klausi

user

Author Sebastian Gross

Posted at 07:57 9. Februar 2012.

Sollte Funktionieren!

user

Author Sven Mawby

Posted at 10:17 13. Februar 2012.

Seit Office 2010 wird der Key nicht „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\“ … aufbewahrt..
.. Wo dieser ist weiss ich nicht, bin einfach mal auf ProduKey umgestiegen 😀

user

Author Sven Mawby

Posted at 10:21 13. Februar 2012.

Ah, hab herausgefunden warum: 64bit speichert unter „HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration“ 😀

user

Author Sebastian Gross

Posted at 10:59 13. Februar 2012.

Hallo Sven,
ganz genau, die Schlüssel in der Registry der 64Bit Systeme werden in zwei „Klassen“ unterteilt. Man muss dann im Code eine Unterscheidung einbauen und den passenden Pfad abfragen.
Gruß, Basti

user

Author Jonas Jelonek

Posted at 17:02 12. März 2012.

Ich verwende visual Basic 2010 Express Edition und habe den Code mal in Visual Basic eingefügt doch das Programm meckert.

Mit den Zeilen

tmp = tmp & „“ & Hex(hexbuf(l))

tmp2 = tmp2 & „“ & Hex(hexbuf(l))

KEYSTRING = KEYSTRING & Digits(HN)

scheint etwas nicht zu stimmen undzwar zeigt visual basic unter „&amp“ eine rote linie an

was hab ich falsch gemacht

user

Author Trigg3r

Posted at 13:38 22. Februar 2013.

Wäre es möglich, dass Du das Programm dahingehend anpasst, dass auch Office 2013 Keys ausgelesen werden können? Wäre sehr cool… Besten Dank im Voraus!

user

Author Sebastian Gross

Posted at 11:53 28. Februar 2013.

Theoretisch sollte es auch mit Office 2013 funktionieren, einfach mal testen.

Kommentar verfassen

View Comments (28) ...
Navigation