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
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
So, nach langer Zeit will ich mal den Status hierzu angeben.
Ich hatte, damit es überhaupt automatisch läuft, erstmal folgende Lösung verwendet:
#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
#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
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".
#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.
#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
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.
Danke! Das behebt dann (fast) alle Probleme. Eventuelle Systemabstürze kann ich ja sowieso nicht berücksichtigen.
Welche Probleme sind dan noch offen?
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?
Welches ist denn nun die Version, die man testen darf,
Danke für das Angebot, aber hatte meinen Fehler ja noch gefunden. Die jetzigen Lösungen reichen mir und funktionieren.
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
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
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.