Restart VOR Anmeldefenster

  • Aber Windows erlaubt das nicht. Es wurde gesagt, dass er dass machen würde, wenn Windows es erlauben würde. Du hast gesagt, das geht über den Gast. Windows verlangt mindestens einen Admin...

    Also doch falsch :P

    • Offizieller Beitrag

    So, nach langer Zeit will ich mal den Status hierzu angeben.
    Ich hatte, damit es überhaupt automatisch läuft, erstmal folgende Lösung verwendet:

    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    Author: BugFix

    [/autoit][autoit][/autoit][autoit]

    Script Function:
    Der Rechner muß nach dem Kaltstart sofort wieder neugestartet werden.
    Dieses Skript setzt die Registry-Einträge dafür.
    - Aufruf mit Parameter "DOWN" über "Herunterfahren-Icon" fährt PC herunter
    und trägt Skriptaufruf in "Registry RunOnce" ein
    - Aufruf ohne Parameter über "Registry RunOnce" rebootet den PC

    [/autoit][autoit][/autoit][autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    Local $param = ''
    If $CmdLine[0] Then $param = $CmdLine[1]
    If $param = "DOWN" Then
    RegWrite('HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce', 'MyRestart', 'REG_SZ', '"C:\MyRestart.exe"')
    Shutdown(13)
    Else
    Shutdown(6)
    EndIf

    [/autoit]

    Hierbei wird zwar bis zum Anmeldefenster gebootet aber dann erfolgt sofort der Neustart. Von der Geschwindigkeit ist es eigentlich ausreichend und der User merkt es nicht wirklich.
    Einziger Nachteil: Es muß zwingend über den Link heruntergefahren werden. Un dauch, wenn man einem User 10-mal sagt: Fahre nur über dieses "Herunterfahren-Icon" runter, ihr könnt euch drauf verlasssen, dass es in 30% der Fälle dann doch nicht so gemacht wird.

    Meine aktuelle Überlegung war, (Zeitfaktor und Anmeldeschirm sind jetzt mal absolut sekundär) das Windows-Log auszuwerten - das letzte Herunterfahren-Ereignis. So brauche ich keine extra Registryeinträge und der User kann beenden, wie er will. Es wird bei jedem Start gefragt: Was war zuletzt? "Herunterfahren - dann Rebooten" od. "Reboot - dann nix tun".

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    Author: BugFix

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Wenn der PC zuletzt 'Herunterfahren' verwendete, wird er beim nächsten Start
    nach dem Hochfahren sofort mit 'Reboot' nochmals gestartet.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------
    Local $objWMIService = ObjGet("winmgmts:" & "\\.\root\cimv2")
    Local $colLoggedEvents = $objWMIService.ExecQuery ("Select * from Win32_NTLogEvent Where Logfile = 'System'")
    Local $typ, $str
    For $objEvent In $colLoggedEvents
    If $objEvent.EventCode <> 1074 Then ContinueLoop
    $typ = StringRegExp($objEvent.Message, 'Herunterfahrungstyp: .*\r\n', 1)
    $str = StringReplace($typ[0], 'Herunterfahrungstyp: ', '')
    ExitLoop
    Next
    If $str = 'Herunterfahren' Then
    Shutdown(6)
    EndIf

    [/autoit]

    Lasse ich mir das Ereignis ausgeben, so wird dies auch korrekt angezeigt, ich sehe auch das Icon für mein Skript in der Taskleiste (lasse es z.Zt. per Autostart aufrufen) aber es wird kein Reboot gestartet.
    Könnte das vielleicht mal noch jemand testen?

    Edit: Oops - beim Posten ist es mir aufgefallen: Ich habe nicht beachtet, dass hinter dem Herunterfahrungstyp ja ein Zeilenumbruch ist (die sieht man so schlecht ;) ). Nun klappt es so auch.

    • Offizieller Beitrag

    Es wäre nur ein möglicher Systemhänger als Problem. (kann passieren, da die parallele Videoaufzeichnung recht ressourcenintensiv ist und wenn dann der User noch etwas rumspielt geht das schonmal in die Hose ;) )
    Aber das ist ja unabhängig von dem Hauptproblem und nunmal nicht zu beeinflussen.

  • Hallo BugFix.

    Welches ist denn nun die Version, die man testen darf, um Dir zu berichten, ob es einwandfrei arbeiet und mit welchem BS/OS man arbeiet?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • So viel ich weiß wird Windows in verschiedene Layer eingeteilt, das bedeutet VOR der Anmeldung können KEINE Executable Files (ausser MS Dos fähige) geöffnet werden - da der Layer es schlicht weg nicht ermöglicht.

    Nur Treiber und DLLs oder so...

    Mir hats selbst nur ein Kollege so beschrieben...
    Doch lass mich eines Besseren belehren falls ich mich irren sollte.

    Mfg. Andi

    Einmal editiert, zuletzt von sl4y3r (14. Februar 2010 um 21:08)

  • Das Skript schaut interessant aus, ich werde das weiter verfolgen.

    Man kann so auch Programme vor dem Anmelden ausführen, was in manchen Dingen sehr hilfreich wäre.

    Viel Erfolg weiterhin,
    Matthias

  • hallo leute

    muss jetzt zur sicherheit nochmals nachfragen:
    heiss das, dass alle dateien die unter dem registry key "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce"sind,
    noch vor dem anmelden ausgeführt werden??

    grüsse

    • Offizieller Beitrag

    heiss das, dass alle dateien die unter dem registry key "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce"sind,
    noch vor dem anmelden ausgeführt werden??

    Nein, der Anmeldevorgang muß abgeschlossen sein. Aber danach wird sofort der Eintrag unter RunOnce abgearbeitet - nur Services werden noch davor abgearbeitet.