Seite 3 von 3

Verfasst: 28.10.2008 17:28
von Falko
ts-soft hat geschrieben:Mein EnableShutdown erfordert wohl einen angemeldeten User, sind also
Änderungen nötig. Sollte in der MSDN zu finden sein, bzw. man kann auch
im Taskplaner das Programm mit höheren Rechten starten, könnte auch
helfen. (mit höchsten Priviligien ausführen checken, ist für einfache Aufgaben nicht verfügbar)

Gruß
Thomas
Genau. Der Taskplaner ermöglicht einem Benutzerkonto als auch das Kennwort für dieses Programm zu tätigen. Theoretisch müsste es auch funktionieren. Schließlich funktioniert auch das Schreiben einer Timer.log in der entsprechende If-Abfrage, wo das Shutdown ausgeführt wird.

Ob dazu noch höhere Rechte erforderlich sind habe ich in MSDN bzw. Google nicht gefunden :freak:

Gruß Falko

Verfasst: 28.10.2008 17:30
von ts-soft
Zumindest unter Vista ist dafür nur eine Checkbox abzuhaken. Damit wird
auch UAC umgangen :mrgreen:

Verfasst: 28.10.2008 17:33
von Falko
ts-soft hat geschrieben:Zumindest unter Vista ist dafür nur eine Checkbox abzuhaken. Damit wird
auch UAC umgangen :mrgreen:
Stimmt auch :mrgreen: .
Aber leider ist es Windows 2000. Das war wohl das erste und letzte OS wo MS damals versucht hatte, ein automatisches Shutdown zu verhindern. :mrgreen:

Gruß Falko

Verfasst: 28.10.2008 17:52
von Little John
Hallo Falko,

ich habe Dich jetzt so verstanden, dass sich der Taskmanager automatisch auf einem Benutzerkomnto einloggt, und danach wird Dein Shutdown-Programm gestartet, richtig? Komisch, dass das Herunterfahren dann nicht funktioniert ...

Aber vielleicht kannst Du ja einfach mal probieren, Dein Shutdown-Programm vor dem Einloggen zu starten, indem es in
HKEY_LOCAL_MACHINE\ Software\ Microsoft\ Windows\ CurrentVersion\ RunServices
aufgerufen wird.

Gruß, Little John

Verfasst: 28.10.2008 17:53
von bobobo
find ich nun aber recht "komisch" dass das nicht funktionieren soll.



ff aus http://www.wer-weiss-was.de/theme119/ar ... 97882.html
Da kann ich Dir einen Tip geben: Beim Anlegen des Tasks schreibst Du erst mal einen User mit Passwort rein. Danach änderst Du den Account in den Eigenschaften des geplanten Tasks in "SYSTEM" (ohne Anführungszeichen). Das auspoppende Fenster zur Passworteingabe einfach mit OK schliessen. Wenn Du danach nochmal die Eigenschaften dieses Tasks aufrufst, siehst Du dass jetzt der User SYSTEM drin steht.

Verfasst: 28.10.2008 17:55
von NicTheQuick
Little John hat geschrieben:
NicTheQuick hat geschrieben:Dann braucht man den Taskplaner aber auch nicht mehr.
Wenn man den Taskplaner benutzt, dann ist es nicht nötig dass während der Woche den ganzen Tag über das selbstgeschriebene Programm im Hintergrund läuft. Ich dachte mir, das sei ressourcenschonender, aber das ist nur geraten. :-)
Falsch geraten. <)

In Wirklichkeit steht bei diesem Programm sogar nach mehreren Tagen
Laufzeit am Stück immer noch bei CPU-Zeit im Taskmanager 0 Sekunden.
Deswegen das großzügige Delay. Hier hätte sogar ein Delay(59000) gereicht.

Verfasst: 28.10.2008 18:55
von Falko
bobobo hat geschrieben:find ich nun aber recht "komisch" dass das nicht funktionieren soll.



ff aus http://www.wer-weiss-was.de/theme119/ar ... 97882.html
Da kann ich Dir einen Tip geben: Beim Anlegen des Tasks schreibst Du erst mal einen User mit Passwort rein. Danach änderst Du den Account in den Eigenschaften des geplanten Tasks in "SYSTEM" (ohne Anführungszeichen). Das auspoppende Fenster zur Passworteingabe einfach mit OK schliessen. Wenn Du danach nochmal die Eigenschaften dieses Tasks aufrufst, siehst Du dass jetzt der User SYSTEM drin steht.
Erst dachte ich, es funktioniert auch nicht mit SYSTEM, weil auch da nur
die Timer.log korrekt mit dem im IF-Zweig ausgeführten WriteStringN...
ausgeführt wurde, aber wiedermal das Shutdown irgendwie nicht so,
wie ich wollte :twisted: .

Danach war ich mal so dreist und habe einfach das Else dazwischen entfernt auskommentiert, weil mir irgendwie der Gedanke kam, es könnte
ja die eigene Exe sein, die das normale Shutdown verhindert und man
evtl. beide Funktionen ausführen müßte .

Und siehe da, nun kann man ohne Kennwort unter dem Benutzer
'SYSTEM' endlich den Rechner in den vorbestimmten Ruhestand schicken. Ich danke allen hier Beteiligten, die mich in die richtige Richtung geleitet
haben.

Nochmals vielen Dank an alle.


Hier, die Änderung damit es beim Willkommensbildschirm incl. bobobos Tip funktioniert. Danke bobobo :allright:

Code: Alles auswählen

...
Procedure WndProc(hWnd, uMsg, wParam, lParam)
  FileSeek(0, Lof(0))  
  If uMsg = #WM_TIMER
    If time_New$ => StopTime$ And time_New$ <= StopTime1$ And (Tag=#Samstag Or Tag=#Dienstag)
       EnableShutDown()
    ;Else
       ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_FORCE | #EWX_FORCEIFHUNG , 0)
    EndIf
  EndIf
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
...
Im Taskplaner einen neuen Task mit Benutzer mit Kennwort angelegt, welcher nur beim Systemstart ausgeführt wird, und hinterher nach
erstellter Projektdatei dort den Benutzer auf 'SYSTEM' geändert, ohne ein Passwort zu vergeben. Das hat den Vorteil, das man ohne Kennwort dem System ein Shutdown überlassen kann.

Gruß, Falko

Verfasst: 28.10.2008 19:31
von bobobo
hätt mich auch ein wenig gewundert wenn's garnich geklappt hätte

Verfasst: 28.10.2008 20:03
von Little John
Falko hat geschrieben:man evtl. beide Funktionen ausführen müßte
Na ja, EnableShutDown() ermöglicht den Shutdown (bereitet ihn quasi vor), und ExitWindowsEx_() führt ihn dann durch ... so wie Thomas das in seinem ersten Beitrag in diesem Thread gemacht hat. Ist mir aber auch nicht aufgefallen, dass es in Deinem Code anders war.

Gruß, Little John