BigBasti's Blog About Me & my Digital Lifestyle

6Nov/098

Windows Lizenzschlüssel aus der Registry auslesen

Da der Beitrag über das Auslesen des Office Schlüssels sehr beliebt ist, habe ich nun auch das Lesen des Windows Schlüssels als Beispiel verfasst.

Das Vorgehen hierbei ist sogar noch einfacher als beim Office Schlüssel, da es keine Aufteilungen in Versionen gibt! In allen Windows NT Versionen (also alle ab XP) befindet sich der Schlüssel in der Registry unter diesem Pfad:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

winkeyBild 1: Der Registryordner mit dem Windows Schlüssel

In diesem Ordner finden wir den Binärwert "DigitalProductId", der viele Hexadezimalzeichen enthält!

Der Code ist hierbei dem aus dem Officebeispiel sehr ähnlich, da er ja auch nichts anderes macht, als den im HEX-Code vorhandenen Key in lesbare Schrift umzuwandeln! Die einzige Schwierigkeit hierbei besteht darin, den Key richtig zusammen zusetzen, denn es wird nicht das komplette Alphabet verwendet um einen Windows Key zu generieren sondern nur diese Zeichen:

B C D F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9

Wenn man das beachtet steht einem nichts mehr im Wege! Der Code aus diesem Beispiel stammt ausnahmsweise nicht von mir sondern von vcware.de - danke dafür an dieser Stelle!

Ich habe diesbezüglich wie immer ein kleines Demoprojekt angefertigt, das ihr euch herunterladenkönnt! Download

Bitte berichtet ob es bei euch gut geklappt hat.
Hier könnt ihr euch das komplette kostenlose Programm zum auslesen von Windows & Office key herunterladen. (English & Deutsch)

14Jul/090

Microsofts Visionen werden Langsam Wirklichkeit

Microsoft ist ja berühmt dafür, in unregelmäßigen Abständen Videos mit ihren eigenen Zukunftsvisionen zu veröffentlichen. Meißt sind auch Angaben dabei wie lange es dauern wird, bis wir oder "die" (Microsoft) diese Visionen verwirklicht haben.

Erst vor ein paar Monaten hat Microsoft ein Video Veröffentlicht, dass zeigen soll wie unser Leben in der Zukunft aussehen soll. Aber darum gehts jetzt nicht, denn ich will jetzt lieber einen kleinen Rückblick in das Jahr 2005 starten, wo Microsoft ein Video Veröffentlicht hat, das beschreibt wie Zusammenarbeit in der Zukunft (damals in 2010) aussehen wird:

Warum ich jetzt darauf zu sprechen komme? Ganz einfach, denn vor wenigen Tagen hat Microsoft Videos veröffentlicht, die die Verbesserungen von Office in der Version 2010 zeigen. - So ein Zufall oder?

Und erstaunlicherweise sind viele der Punkte die man in dem Video sieht tatsächlich Bestandteil von Office 2010.

So können zb. mehrere Personen gleichzeitig an einem Dokument arbeiten, egal ob Office auf dem Rechner installiert oder nicht, es genügt ein Browser!

Präsentationen können von jedem Ort auf der Welt gehalten werden und auch hier genügt ein Browser zum Vorführen oder zum anschauen der Präsentation!

Dateien sind für alle live zugänglich und Änderungen sehr einfach einsehbar (siehe OneNote 2010).

Lediglich die Sache mit den Webcams ist zur Zeit noch nicht so ohne weiteres möglich! Aber das wird sicher auch noch!

Ich persönlich freue mich schon auf der neue Office und hoffe Microsoft wird auch eine vernünftige Mac-Version bereitstellen!

3Mai/0918

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)

   
Get Adobe Flash playerPlugin by wpburn.com wordpress themes