Windows 7 Key auslesen per Visual Basic

Batch Kommandozeilen Snippets

Ich habe heute ein kleines Visual Basic Script gebastelt mit dem man den Windows 7 Key auslesen kann. Das Script erkennt automatisch ob eine 32 oder 64 Bit Version von Windows ausgeführt wird, handelt dementsprechend und speichert den gefundenen Lizenz-Key mit Angabe des aktuellen Datum in einer Textdatei ab. Wenn ihr die Zeile 8 bzw. 9 anpasst, könnt ihr das Script auch auf einer Freigabe ablegen und so z.B. über ein GPO verteilt laufen lassen.

Das Script

On Error Resume Next
Dim WshNetwork
Set WshNetwork = CreateObject("WScript.Network")
cName = WshNetwork.ComputerName
Set WshShell = CreateObject("WScript.Shell")
pa = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
set fso = CreateObject("Scripting.FileSystemObject")
logpath = fso.BuildPath(fso.GetAbsolutePathName("."), "win7keys.txt")
'logpath = "\\server\freigabe\w7key-log.txt" 'fuer speicherung auf serverfreigabe
 
wkey = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
wdigitalId = WshShell.RegRead(wkey & "DigitalProductId")
wProductName = "Produkt Name : " & WshShell.RegRead(wkey & "ProductName") & vbNewLine 
wProductId   = "Produkt Id   : " & WshShell.RegRead(wkey & "ProductId") & vbNewLine 
wProductKey  = "Install Key  : " & Converted(wdigitalId)
windowsData = wProductName & wProductId & wProductKey

Speichern()
 
Function Converted(id)
    Const OFFSET = 52
    i = 28
    Chars = "BCDFGHJKMPQRTVWXY2346789"
    Do
        Cur = 0
        x = 14
        Do
            Cur = Cur * 256
            Cur = id(x + OFFSET) + Cur
            id(x + OFFSET) = (Cur \ 24) And 255
            Cur = Cur Mod 24
            x = x -1
        Loop While x >= 0
        i = i - 1
        Converted = Mid(Chars, Cur + 1, 1) & Converted
        If (((29 - i) Mod 6) = 0) And (i <> -1) Then
            i = i -1
            Converted = "-" & Converted
        End If
    Loop While i >= 0
End Function
 
Function Speichern()
  WScript.Echo "Datei gespeichert unter: " & logpath
  Set file = CreateObject("Scripting.FileSystemObject").CreateTextFile(logpath,2,0)
  file.Writeline(FormatDateTime(Date, vbLongDate) & vbNewLine)
  file.Writeline(windowsData & vbNewLine)
  file.close
End Function

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.