![]() |
Konsolenprogramm und Shutdown verhindern
Hi,
ich habe folgendes Szenario: Ich habe einen Dienst der normal unter SYSTEM-Account läuft. Auf diesen Dienst habe ich Codetechnisch keinen Zugriff. Dieser Dienst startet allerdings eine von mir geschriebene Konsolenanwendung. Nun muss diese Konsolenanwendung die Fähigkeit haben, wärend sie läuft, den Shutdown zu verhindern. Da ich ja kein Fenster habe, und die Konsolenanwendung auch vom Dienst unter SYSTEM gestartet wird, kann ich die Lösung über WM_QueryEndSession vergessen. Bleibt mir quasi noch die SetConsoleCtrlHandler und dort CTRL_SHUTDOWN_EVENT abfangen. Klappt soweit gut, Nur weiß ich jetzt nicht wie ich innerhalb dieses Events den Shutdown tatsächlich verhindern kann, so wie es über WMQueryEndSession gehen würde. Weiß jemand eine Lösung? Grüße, xpmd |
Re: Konsolenprogramm und Shutdown verhindern
Unter nt4-xp:
mit NtSetInformationProcess (und NtCreateToken) allen Prozessen das SeShutdownPrivilege entziehen. Achtung: Die Funktion ist nicht von ms dokumentiert und funktioniert nicht mehr unter vista! Und noch ne Lösung [einfacher und besser]: Mit SuspendThread alle Threads von winlogon auf eis legen. dann dürfte das system erst runterfahren, wenn winlogon wieder mit ResumeThread aufgetaut wird. |
Re: Konsolenprogramm und Shutdown verhindern
|
Re: Konsolenprogramm und Shutdown verhindern
Ein sehr gutes Buch!
Aber wie der Titel schon sagt nt/2k! Unter vista lässt sich das AccessToken nicht mehr ändern wenn der Prozess läuft (wie ich letztens erfahren musste). Von daher ist es besser Winlogon einzufrieren. |
Re: Konsolenprogramm und Shutdown verhindern
Zitat:
Warum darf der Rechner denn nicht runtergefahren werden, wenn dein Programm läuft? |
Re: Konsolenprogramm und Shutdown verhindern
Die Lösung über WM_QUERYENDSESSION geht doch nicht, weil er einen Service verwendet.
Mach doch einen Hook auf ExitWindowsEx. |
Re: Konsolenprogramm und Shutdown verhindern
Was spricht gegen einen zusätzlichen Thread mit einem Fenster, über das man die Nachricht erhält?
|
Re: Konsolenprogramm und Shutdown verhindern
Zitat:
Aber ich hab ja auch davon noch abgeraten; ich wollte es nur nicht komplett löschen, weil es ja auch ne Lösung ist. Aber was spricht gegen die Methode mit winlogon? |
Re: Konsolenprogramm und Shutdown verhindern
2x auf absenden gedrückt sorry. Ich dachte der Browser würde hängen
|
Re: Konsolenprogramm und Shutdown verhindern
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Konsolenprogramm und Shutdown verhindern
also winlogon is ja für logon-aktivitäten verantwortlich.
Das heißt: Wenn es "schläft" (nett formuliert) kann man sich nicht abmelden, den PC ausschalten... [Alles Andere funktioniert!] Wenn man es dann wieder "aufweckt" werden alle Aufgaben (abmelden...) abgearbeitet. Um das Verhalten zu studieren kannst du den Prozess ja ersteinmal mit Procexp von sysinternals schlafen legen. Da haste wenig Arbeit und kannst beurteilen, ob die Lösung zu deinem Programm passt. Viel Erfolg Ein Problem gibts noch: Winlogon schaltet ja auch bei <ctrl><alt><del> auf den Winlogon-desktop um. Das heißt das funktioniert kurzzeitig auch nicht! [könnte man auch Als Lösung für einen Anderen Thread nutzen] Das kann aber auch von Vorteil sein (sprich System lässt sich nicht abmelden...) |
Re: Konsolenprogramm und Shutdown verhindern
Wie hast du es denn mit dem Fenster probiert? Hast du eine Nachrichtenschleife?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz