BigBasti's Blog About Me & my Digital Lifestyle

3Mai/0921

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

unbenanntDer 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)

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Yigg
  • Google Bookmarks
  • PDF
  • MySpace
  • email
  • Identi.ca
  • Twitter

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (21) Trackbacks (1)
  1. KLAPPT NICHTMEHR SEIT

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Registration

    Siehe nicht 12.0 sondern 14.0!

    liest falschen key aus

  2. 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…

  3. Danke für das Tool. Hat mir für die Installation des neuen Rechners geholfen ;)

  4. Cooles Tool! gut gemacht!

  5. 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? ^^

  6. 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

  7. 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

  8. 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

  9. Hallo Sebastian Gross,
    danke erstmal für deine antwort :D
    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

  10. 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

  11. 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

  12. 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

  13. 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

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

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

  16. Anfrage hat sich erledigt

  17. 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?

  18. Cooles Tool. Danke

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

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

  21. Sollte Funktionieren!


Leave a comment

(required)

Get Adobe Flash playerPlugin by wpburn.com wordpress themes