Windows 10 Keys auslesen

Antworten
crawleroz1
Beiträge: 49
Registriert: 13 Mär 2018, 11:36

Windows 10 Keys auslesen

Beitrag von crawleroz1 »

Guten Tag OPSI community,
ich würde gerne die Windows 10 Keys vieler Rechner automatisch auslesen und irgendwo zentral zusammenfassen.
das Standard-Paket swaudit ist dazu leider nicht in der Lage und lässt alle Key-Felder leer.

Hat das von euch schon einer mal gemacht mit z.B. dem Magical Jelly Bean Keyfinder?
Ich denke darüber nach diesen per OPSI-Skript bei jedem zu starten und den PC Namen samt Windows Key in einer Logdatei auf einem Netzlaufwerk-Share zu speichern. Geht das mal so ganz theoretisch gefragt?

Bin für Rat, Vorschläge, Ideen oder Warnungen offen :P
crawleroz1
Beiträge: 49
Registriert: 13 Mär 2018, 11:36

Re: Windows 10 Keys auslesen

Beitrag von crawleroz1 »

Ich hab's einfach via GPO und .vbs script gelöst
Hier die Alpha der "read-key.vbs"

Code: Alles auswählen

 On Error Resume Next
 
 
 'Deklaration der Variablen
	Dim objshell
	Dim path
	Dim DigitalID
	'Dim Result
	Dim FILE_LOG
	
	Dim objSystemInfo
	Dim strHostname
	
	Dim ObjFso
	Dim strUsername

	
	
	' Create object WinNTSystemInfo
	Set objSystemInfo = WScript.CreateObject("WinNTSystemInfo")

	' Get local hostname
	strHostname = objSystemInfo.ComputerName
	strUsername = objSystemInfo.UserName
	
	' Erzeuige Objekt für Logfile	
	Set ObjFso = CreateObject("Scripting.FileSystemObject")
	
  
	Set objshell = CreateObject("WScript.Shell") 
	'Set registry key path 
	Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" 
	'Registry key value 
	DigitalID = objshell.RegRead(Path & "DigitalProductId") 
	Dim ProductName,ProductID,ProductKey,ProductData 
	'Get ProductName, ProductID, ProductKey 
	ProductName = "Product Name: " & objshell.RegRead(Path & "ProductName") 
	ProductID = "Product ID: " & objshell.RegRead(Path & "ProductID") 
	ProductKey = "Installed Key: " & ConvertToKey(DigitalID)  
	ProductData = ProductName  & vbNewLine & ProductID  & vbNewLine & ProductKey

	
	' Lege Logfiledatei fest
	FILE_LOG = "\\Netzwerk\Pfad\WindowsKeyInfo.txt"

	' Schreibe Logfile
	WriteLog Now & " " & strHostname & " " & ProductKey & " " & ProductName & "       " & strUsername


 
 
 
'Convert binary to chars 
Function ConvertToKey(Key) 
    Const KeyOffset = 52 
    Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert 
    'Check if OS is Windows 8 
    isWin8 = (Key(66) \ 6) And 1 
    Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4) 
    i = 24 
    Maps = "BCDFGHJKMPQRTVWXY2346789" 
    Do 
           Current= 0 
        j = 14 
        Do 
           Current = Current* 256 
           Current = Key(j + KeyOffset) + Current 
           Key(j + KeyOffset) = (Current \ 24) 
           Current=Current Mod 24 
            j = j -1 
        Loop While j >= 0 
        i = i -1 
        KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput 
        Last = Current 
    Loop While i >= 0  
     
    If (isWin8 = 1) Then 
        keypart1 = Mid(KeyOutput, 2, Last) 
        insert = "N" 
        KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0) 
        If Last = 0 Then KeyOutput = insert & KeyOutput 
    End If     
     
 
    ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5) 
    
     
End Function 


' --Schreibe eine Log Datei--
Function WriteLog(Inhalt)

Dim FileOut
Set FileOut = ObjFso.OpenTextFile(FILE_LOG,8,true)
FileOut.WriteLine (Inhalt)
FileOut.Close
Set FileOut = Nothing
End Function
feltel
Beiträge: 222
Registriert: 09 Dez 2014, 07:22

Re: Windows 10 Keys auslesen

Beitrag von feltel »

Die Windows-Keys sind ja mittlerweile eh alle in den BIOSen drin und wenn eine Win10-Maschine online geht, dann wird daraus bei Microsoft eine digitale Lizenz, mit dem sich Windows bei einer Neuinstallation aktiviert. Wenn Du aber trotzdem die Keys haben willst, dann geht das z.B. über

Code: Alles auswählen

Set $oemkey$ = GetOutStreamFromSection ('DosInAnIcon_get_OEM_key winst /sysnative')
Set $LicenseKey$ = takeString(2,$oemkey$)

[DosInAnIcon_get_OEM_key]
wmic path softwarelicensingservice get OA3xOriginalProductkey | findstr \-
Antworten