;*****************************************
;Lizenzstatus_Remote.au3 by mep
;Erstellt mit ISN AutoIt Studio v. 1.08
;*****************************************
#include <Array.au3>

Local $sComputerName = ''
Local $sUserName = ''
Local $sPassword = ''

$sComputerName = InputBox("Rechner",  "Rechner")
$sUserName = InputBox("User",  "User")
$sPassword = InputBox("PW",  "PW")

Local $aLizenzstatus = _Get_Lizenzstatus($sComputerName, $sUserName, $sPassword)
_ArrayDisplay($aLizenzstatus, '$aLizenzstatus - ' & $sComputerName)

$sPassword = _RandomString(100)

;~ Name: Windows(R), Professional edition
;~ Beschreibung: Windows(R) Operating System, RETAIL channel
;~ Teil-Product Key: XXXXX
;~ Lizenzstatus: Lizenziert
Func _Get_Lizenzstatus($sComputerName = '', $sUser = '', $sPassword = '')
    Local $sCMD, $iPID, $sText, $aText,  $aSplit
    $sCMD = 'cscript.exe //Nologo //E:vbs C:\Windows\System32\slmgr.vbs ' & $sComputerName & ' ' & $sUser & ' ' & $sPassword & ' /dli'
    $iPID = Run($sCMD, '', @SW_HIDE, $STDOUT_CHILD)
    If Not $iPID Then Return SetError(1, 0, False)
    ProcessWaitClose($iPID)

    $sText = StdoutRead($iPID)
    If $sText Then
        $aText = StringSplit($sText, @CRLF, 3)
        _ArrayColInsert($aText, 1)
        For $i = UBound($aText) -1 To 0 Step -1
            $aSplit = StringSplit($aText[$i][0], ': ', 3)
            If UBound($aSplit) <> 2 Then
                _ArrayDelete($aText, $i)
                ContinueLoop
            EndIf
            $aText[$i][0] = $aSplit[0]
            $aText[$i][1] = $aSplit[1]
        Next
        Return $aText
    EndIf

    Return SetError(2, 0, False)
EndFunc


Func _RandomString($length)
    $string = ""
    For $i = 1 To $length
        $string &= Chr(Random(0, 255, 1))
    Next
    Return $string
EndFunc   ;==>_RandomText