Tut mir leid, wenn sich das jetzt im Kreis dreht, aber in meinen Augen hast du die sauberste Lösung dafür schon längst gefunden: Ein LogOff-Script in den Gruppenrichtlinien hinzufügen. in einer batchdatei lassen sich dann auch mehrere Programme starten und die können dann auch schon nacheinander abgearbeitet werden. Erst wenn das Script fertig ist, wird der PC tatsächlich heruntergefahren. (natürlich keine Garantie ...)
Ja, es dreht sich tatsächlich im Kreis.
*ist-freundlich-gemeint* Das was du hier beschreibst, habe ich von Anfang an (siehe
Posting #1 unter "Lösung bisher") auch aufgeführt. Wie dort schon geschrieben, wird mit den Group Policies das Problem A (Lautstärke runter beim Shutdown) gelöst, aber Problem B (einfache Installierbarkeit) bleibt bestehen.
Das ist schon ziemlich verwirrend und ich kann verstehen, wenn sich das im Kreis dreht. Deshalb hier eine:
"Entwirrung":
Wie in
Posting #1 unter "Gesuchte Hilfe" beschrieben, ist das
primäre Ziel dieses Threads, eine Lösung zu programmieren,
I) die mir die Einstellungen der Group Policies und das Laden der benötigten Module vornimmt,
II) oder eine komplette Delphi-Lösung
ohne Group Policies, mit der ich NirCmd beim Beenden von Windows aufrufen kann.
Für Variante "I" wurde hier keine Möglichkeit gefunden, die nicht irgendwie, sagen wir, "wackelig" ist.
Für Variante "II" wurden mehrere Vorschläge gemacht, die
IMHO allesamt gute Ansätze liefern. Jeder der Ansätze fordert einen mehr oder weniger großen Aufwand.
Vorläufiger Abschluss:
Mit den hier genannten Vorschlägen kann die Variante "II" umgesetzt werden. Mein Favorit ist natürlich der von turboPASCAL mit "SndVolOnShutdown", weil das schon mundgerecht aufbereitet ist.
Da jetzt auch der Source-Code vorliegt, kann ich die Querschläger einschätzen. Eine Querschläger-Quelle wäre, dass für XP nicht garantiert werden kann, dass ein Programm vollständig ausgeführt wird. Jedoch handelt es sich beim Setzen der System-Lautstärke um eine Aktion, die nur wenig Zeit benötigt und in der Praxis kein Problem darstellen sollte.
Da dies das primäre Ziel dieses Threads war, sehe ich das
Problem als
gelöst an.
Vielen Dank an alle Mitwirkenden!
Nachtrag:
Im Nachtrag möchte ich noch erläutern, warum ich einen
vorläufigen Abschluss gemacht habe, und auf das Programm "SndVolOnShutdown" von turboPASCAL eingehen.
@turboPASCAL
Zunächst mal
vielen Dank, dass du den Source-Code zur Verfügung stellst!
"SndVolOnShutdown" arbeitet für XP zwar "nur" mit dem Auswerten der schon genannten ENDSESSION-Message, mit den bekannten Querschlägern. Wie schon geschrieben, fallen diese aber für das Setzen der Sys-Lautstärke nicht ins Gewicht. - Daür ist aber eine Lösung für "VistaAndUp" enthalten, die genauso arbeitet, wie ich mir "sauber" vorstelle: Das Runterfahren wird verhindert und sämtlicher Code wird VOR dem Runterfahren ausgeführt.
Ein weiterer Pluspunkt ist, dass es sich um eine Komplettlösung handelt, wodurch auch NirCmd überfüssig wird. Eine Install-Routine ist hierfür definitiv "Null Problemo". Auch die Steuerung per INI ist mir sympatisch, weil transparent.
[ScherzModusAn] Ich hab überlegt, ob du vielleicht Schotte bist, da du sehr sparsam mit Kommentaren umgegangen bist.
[ScherzModusAus] Bitte nicht ärgern, war nur so'n Gedanke.
Ansonsten, wie gesagt, freue ich mich sehr über deine Lösung.
Thema "Vorläufiger Abschluss":
"Vorläufig" deshalb, weil es außer dem primären, konkreten Ziel ein sekundäres Ziel gibt. Wie schon im Thread-Titel zu erkennen, wäre ein "Shutdown-Folder" auch nicht schlecht. (Wie kann man das denn auf deutsch nennen?) Unter Shutdown-Folder stelle ich mir das Gegenstück zum Startup-Folder (sprich Autostart-Ordner) vor. Im Shutdown-Ordner könnten im besten Fall einfach Verknüpfungen zu gewünschten Programmen platziert werden, die ohne die bekannten Querschläger VOR dem Runterfahren ausgeführt werden.
Aber wie gesagt, sehe ich das Problem dieses Threads als gelöst an. Sollte ein Shutdown-Ordner für mich (oder jemand anderen) interessant werden, wäre wohl ein weiterer Thread das Richtige.
In diesem Sinne: Vielen Dank, Gruß und Kuss, dein Maximus.
Guido.