Windows Aktivierung

  • Hallo allerseits,

    ich habe ein kleines Problem, und zwar würde ich gerne den Status der Windows 10 Aktivierung anzeigen lassen. Hatte dazu zwar einiges gefunden, aber nur für Vista und früher, das was ich gefunden hatte zeigt mit immer an dass Windows aktiviert ist, auch wenn das nicht der Fall ist. In Batch hatte ich dazu folgendes verwendet:

    Code
    SetLocal EnableExtensions EnableDelayedExpansion
    Set "WinVerAct="
    For /f "tokens=*" %%W in ('cscript /Nologo "C:\Windows\System32\slmgr.vbs" /xpr') Do Set "WinVerAct=!WinVerAct! %%W"
    if Not defined WinVerAct ( 
        Echo:No response from slmgr.vbs
        Exit /B 1
    )
    
    ECHO %WinVerAct%
    ENDLOCAL

    Hat jemand eine Idee, wie man das in AutoIT lösen kann?


    lg und eine schöne Woche

    chris

  • Code
    set de=Lizenzstatus
    set en=License Status
    
    for /f "tokens=2 delims=: " %%a in ( 'cscript //nologo "%systemroot%\system32\slmgr.vbs" /dli ^| find "%de%"' ) do set "state=%%a"
    ECHO "%de%"=%state%

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • ähm, dass ist jetz nicht AutoIt oder? Zumindest kommt nur ne Fehlermeldung. Also als Batchalternative funktioniert es, aber ich möchte es gerne in Autoit einbinden. Klar ich könnte die Batch aufrufen, aber es soll in der GUI erscheinen, und eine variable ausn einer Batch übernehmen, habe ich gelernt, geht ja nicht


    lg


    Chris

    Einmal editiert, zuletzt von casi4712 (7. Februar 2022 um 14:02)

  • Und was hindert dich daran, die Ausgabe der Batch in eine Textdatei umzuleiten, um dir da die Variable herzuholen?

    Um bei dem Beispiel von Schnuffel zu bleiben:

    Code
    set de=Lizenzstatus
    set en=License Status
    
    for /f "tokens=2 delims=: " %%a in ( 'cscript //nologo "%systemroot%\system32\slmgr.vbs" /dli ^| find "%de%"' ) do set "state=%%a"
    ECHO "%de%"=%state% >Li.txt

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • sorry, dass du das in autoit haben möchtest habe ich irgendwie überlesen ...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Nachtrag in autoit:

    Spoiler anzeigen

    #include <AutoItConstants.au3>

    $iPID = Run(@ComSpec & " /c " & "cscript %windir%\system32\slmgr.vbs /dlv", "", @SW_HIDE, $STDOUT_CHILD)

    $sOutput = ""

    While 1

    $sOutput &= StdoutRead($iPID)

    If @error Then ExitLoop

    WEnd

    MsgBox(0, "Licencing Information", $sOutput)

    Aus dem Output kannste dir ja dann die benötigte Info ziehen.

    original Post: https://www.autoitscript.com/forum/topic/14…comment=1420964

    hier als Array mit Ausgabe des Status:

    Spoiler anzeigen

    #include <AutoItConstants.au3>

    #include <Array.au3>

    $iPID = Run(@ComSpec & " /c " & "cscript %windir%\system32\slmgr.vbs /dlv", "", @SW_HIDE, $STDOUT_CHILD)

    $sOutput = ""

    While 1

    $sOutput &= StdoutRead($iPID)

    If @error Then ExitLoop

    WEnd

    Local $aOutput = StringSplit($sOutput,@CR)

    ;_ArrayDisplay($aOutput)

    Local $sLicenseInfo = StringSplit($aOutput[16],": ",1)

    MsgBox(0, "Licencing Information", $sLicenseInfo[2])

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (7. Februar 2022 um 17:11) aus folgendem Grund: #include <AutoItConstants.au3> #include <Array.au3> $iPID = Run(@ComSpec & " /c " & "cscript %windir%\system32\slmgr.vbs /dlv", "", @SW_HIDE, $STDOUT_CHILD) $sOutput = "" While 1 $sOutput &= StdoutRead($iPID) If @error Then ExitLoop WEnd Local $aOutput = StringSplit($sOutput,@CR) ;_ArrayDisplay($aOutput) Local $sLicenseInfo = StringSplit($aOutput[16],": ",1) MsgBox(0, "Licencing Information", $sLicenseInfo[2])

  • Ich hätte hier noch eine Version mit WMI:

  • ... off Topic

    < Sarkasmus an ...>

    persönliche Glaubensfrage ...

    ich denke es heißt offiziell "autoit" als URL-Schreibweise von "automate it".

    Durch die Herkunft aus dem engl. wird aus meiner Sicht alles klein geschrieben.

    Ob man die beiden Worte trennt oder zusammenschreibt würde ich offen lassen.

    Nachdem der Begriff inzwischen zu einem eigenständigen Begriff in der IT wurde,

    kann man durchaus "autoit" so stehen lassen. ^^

    Da aber heutzutage sich kaum noch jemand die Mühe macht Groß- und Kleinschreibung zu verwenden

    ist der zu erwartende Benefit eher als gering anzusehen...

    < Sarkasmus aus ...>

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Jo, hier bin ich noch mal, also erst mal recht schönen Dank für Ihre Mühe, gut möglich dass ich über die Artikel bereits gesolpert war, diese aber nicht liefen, leider laufen auch beide Scripte hier nicht, das erste liefert mir die meldung:

    Error:Arry Var has incorrect numner of subscripts or subscript dimension range exceeded.

    Beim WMI Script kommt zwar kein Fehler, aber leider sonst nicht viel:(

    schönen Abend noch

    lg

  • ok, so gehts:

    danke noch ma

  • [an casi4712 : ]

    Du solltest unbedingt mal den Rat befolgen und SciTE4AutoIt installieren, damit Du die Ausgabe in der Console auch sehen kannst.

    Laut casi4712 's Aussage, siehe Thread zusammengesetzte-variablen #9 ff, ist das angeblich bereits geschehen, siehe :

    Habe ich doch schon drauf, ...

    [...]

    Beim WMI Script kommt zwar kein Fehler, aber leider sonst nicht viel :(

    Der Code von Oscar funktioniert einwandfrei !

    ok, so gehts : ...

    Dein Skript unterscheidet sich nur dadurch, dass Du das Ergebnis der Funktion _IfWinActivated() in einer MsgBox ausgibst und nicht via ConsoleWrite.

    Wenn Du Oscar 's Skript innerhalb von SciTE(Vollversion) mittels F5 startest, dann erhältst Du :

    Windows is activated: True -> True ist der Rückgabewert der Funktion

    Ich vermute mal, dass Du entweder :

    - das Skript als 'kompilierte' .exe startest

    - die Konsolenausgabe des SciTE-Editors noch nicht für Dich entdeckt hast ;)

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo noch mal, ist mir jetzt ein bisl peinlich, aber nach nochmaligen Testen habe ich festgestellt, dass dieses Problem noch gar nicht so richtig gelöst ist. Die Funktion ifWinActivated von Oscar liefert bei mir in hjedem Falle True auch wenn ich per slmgr windows deaktiviert habe. Es kommt immer True bei raus. Hat sich da doch ein Fehler eingeschlichen? Danke noch mal i.V.

    Hier noch mal der Code dazu:

    Mag sein dass, das jetzt mit der zusätzlichen Aktualisierungsstatus Funktion Bulshit ist, ich habe die Funktion oben erstmal testweise direkt eingesetzt, wie gesagt ist immer True.

    Danke schon mal


    lg


    chris

    Code
    Code
  • Die Funktion ifWinActivated von Oscar liefert bei mir in hjedem Falle True auch wenn ich per slmgr windows deaktiviert habe.

    Zum Verständnis:

    Code
    M:\>WMIC /NAMESPACE:\\root\CIMV2 PATH SoftwareLicensingProduct WHERE LicenseStatus=1 GET Description, LicenseStatus
    Description                                  LicenseStatus
    Windows(R) Operating System, RETAIL channel  1
    Office 16, RETAIL channel                    1


    Ändere die Funktion mal so, dann klappt es sicher auch bei dir: