Den Office Lizenzschlüssel aus der Registry auslesen
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 Leptops 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!
Wo ist der Schlüssel eigentlich gespeichert? Wie so ziemlich alles bei Wondows in der Registry, nämlich hier:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Registration
Der Ordner Registration teilt sich dann jeh 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ällt!
Doch leider ist diese Seriennummer nicht im Klartext gespeichert, sondern im Hexadedimalen Zahlensystem, weswegen wir das ersteinmal umwandeln müssen!
Ü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 auseinandernehmen, 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 Konvertirung 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, undzwar 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_MACHINE\SOFTWARE\Microsoft\Office\12.0\Registration\...", "DigitalProductID", "")
Alle dazu benötigten Funktionen stellt uns der My-Namespace zur Verfügung!
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)
August 8th, 2010
KLAPPT NICHTMEHR SEIT
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration
Siehe nicht 12.0 sondern 14.0!
liest falschen key aus
Dezember 16th, 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…
Dezember 28th, 2010
Danke für das Tool. Hat mir für die Installation des neuen Rechners geholfen
Januar 2nd, 2011
Cooles Tool! gut gemacht!
August 22nd, 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? ^^
August 22nd, 2011
Hallo Lacose,
dieser Abschnitt wandelt die Zeichenfolde aus dem Hexydezimalen in unsere “Sprache” um.
Falls du dich wunderst was die ganzen & 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
August 23rd, 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
August 23rd, 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
August 23rd, 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
August 23rd, 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
August 27th, 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
August 29th, 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
November 5th, 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
November 7th, 2011
trotz Anpassung an 14.0 krieg ich nur eine leere Messagbox….
November 7th, 2011
hab das Prog als User gestartet wo ist erkenne ich dann den Key (als .txt oder so)
November 7th, 2011
Anfrage hat sich erledigt
November 27th, 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?
Januar 12th, 2012
Cooles Tool. Danke
Februar 9th, 2012
Habe mit einem älteren Vaio Office Home and Student 2007 geerbt. Läßt sich dieser Produktkey auslesen?
gruß
klausi
Februar 9th, 2012
Habe mit einem älteren Vaio Office Home and Student 2007 geerbt.
Läßt sich dieser Produktkey auslesen?
Gruß
klausi
Februar 9th, 2012
Sollte Funktionieren!