AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Thema durchsuchen
Ansicht
Themen-Optionen

Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

Ein Thema von Guido Eisenbeis · begonnen am 16. Sep 2011 · letzter Beitrag vom 21. Sep 2011
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#1

Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 01:32
Abstrakt: Wie kann man ein Programm beim Abmelden, Runterfahren, Neustarten von Windows ausführen? (Also sowas wie das Gegenstück zum Autostart-Ordner.)


Konkret:

Ich höre z. B. Musik am PC, oder schaue mir ein Video an, und drehe die Lautstärke hoch. Ist der Film vorbei, die Musik aus, vergesse ich regelmäßig (altersbedingt?), dass die Lautstärke noch hoch ist. Was jetzt kommt ist klar: Beim Runterfahren kommt man in den Genuss des Windows-Abmeldesounds in ungeanter Lautstärke, und im Worst-Case noch gratis einen Herz-Kasper dazu.

Und wie heißt es so schön in den Verkaufssendungen: "Und das ist längst noch nicht alles!" Denn hat man bei Runterfahren mit einem recht kurzen Sound noch Glück gehabt, gibts den nächsten Herzschrittmacher-Kill beim morgentlichen Hochfahren. Bei mir kommt da nämlich nicht nur der XP-Anmedlesound (ja, ich benutz noch XP ), sondern es startet gerade dann das tägliche Backup, das mit Sound eingeläutet wird, ebenso meldet sich lautstark mein Reminder für Termine und mein freundliches eMail-Programm schreit mir sanft "Sie haben Post!" um die Ohren.


Problem:

A) Es soll beim Beenden von Windows (Abmelden, Runterfahren, usw.) ein Programm ausgeführt werden, das die Lautstärke (Master-Volume) auf einen gewünschten Wert runterstellt (NICHT Mute, also größer 0 ).

B) Das Programm soll möglichst mit einer Installations-Routine installiert werden können, z. B. Doppelklick -> ein paarmal "Weiter" -> und "Fertig".
(Kurzer Begründung: Zu meinen Sicherheitsvorkehrungen gehört das Restaurieren des Systems (per Ghost-Image) alle 4 - 6 Wochen, und die hier gesuchte Lösung soll erst dann in das Image, wenn ich es ausgiebig getestet habe.)


Lösung bisher:

Das einfachste war, ein (fertiges) Programm zu finden, mit dem sich die Lautstärke auf einen gewünschten Wert einstellen lässt: Das winzige Command Line Tool NirCmd.

Dann wurde es schwierig: Ein Programm finden, das andere Programme ausführt, wenn der PC runtergefahren wird. Es gibt zwar ein paar wenige Programme, die sind aber nicht wirklich zu gebrauchen. Entweder kommerziell, oder mit Nag-Ware.

Group Policies: Ich habe mehrere Tage recherchiert (natürlich nicht 24 Stds) und alle Lösungen führten immer wieder zu den Windows Group Policies. Das habe ich umgesetzt, und es funktioniert in soweit, dass das Problem A (siehe oben) gelöst wird. Aber bei Problem B (einfache Installierbarkeit) bin ich gescheitert.


Gesuchte Hilfe:

Wie kann ich eine Lösung programmieren, die mir entweder die Einstellungen der Group Policies vornimmt (bin gescheitert an der Win SID u. ä.), oder eine komplette Delphi-Lösung ohne Group Policies, mit der ich NirCmd beim Beenden von Windows aufrufen kann?


Guido.


Edit: Bezug zur Themen-Überschrift eingefügt.

Geändert von Guido Eisenbeis (16. Sep 2011 um 01:39 Uhr)
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#2

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 02:01
Schreib Dir ein kleines Programm ohne sichtbares Fenster, reagiere auf die Message "WM_QUERYENDSESSION", setze die Lautstärke herab oder mach sonstwas. Im Messagehandler musst Du auf die Message reagieren (result auf TRUE/1) setzen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 03:34
Das Problem lässt sich also darauf reduzieren, dass der Installer die Groupe Policy automatisch einrichten soll.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 06:55
Schreib Dir ein kleines Programm ohne sichtbares Fenster, reagiere auf die Message "WM_QUERYENDSESSION", setze die Lautstärke herab oder mach sonstwas. Im Messagehandler musst Du auf die Message reagieren (result auf TRUE/1) setzen.
Den Ansatz kenne ich und hab ihn auch schon bei meinen Recherchen gefunden. Zum Beispiel hier: vor runterfahren ein programm starten Ich freue mich trotzdem über deinen Vorschlag.

Wie man sehen kann, ist mein Einleitungs-Posting so schon recht lang. (Zum Glück lesen Programmierer gerne ) Da wollte ich nicht auch noch alles überfluten mit "ich hab schon dies und das und das andere auch noch probiert". Zuerst hoffte ich, eine Diskusion in Gange zu kriegen. Dein Beitrag hilft dabei. *freu*

Allerdings befürchte ich bei diesem Ansatz, dass er einen Overhead, (Wikipedia: evtl. entbehrlichen Mehraufwand, der nicht direkt Nutzen erzeugt) nach sich zieht, der sich bei dieser simplen Aufgabe (Lautstärke rückstellen beim Shutdown) nicht "rechnet". Zum Beispiel ist dabei nicht gewährleistet, dass so ein Programm ausgeführt wird, bevor der Abmeldesound ertönt. Oder Beispiel 2, könnten schon Dienste oder gar der Explorer beendet sein, so dass das Programm zum einen seine Funktion nicht ausführen kann, oder zum anderen das Runterfahren blockiert und der PC hängen bleibt. Usw.

Ich habe gehofft, das in dieser Diskussion auch die ein oder andere Information auftaucht, die solche ungewollten Seiteneffekte aufzeigt, denn ich bin nicht mit alle Abläufe beim Shutdown vertraut. Ich behalt die Lösung aber im Hinterkopf.


Das Problem lässt sich also darauf reduzieren, dass der Installer die Groupe Policy automatisch einrichten soll.

Hallo Michael, freue mich, nach langer Zeit wieder was von "alten Bekannten" zu hören. War lange Zeit nicht hier.

Zum Thema: Du hast den Nagel auf den Kopf getroffen! Nach den schon erwähnten Recherchen habe ich den Eindruck, dass die quasi Windows-eigene Möglichkeit mit den Group Policies die sauberste Lösung ist; zumindest was das korrekte Ausführen (m)eines Programms und das anschliesende Runterfahren von Windows betrifft. Bei meinen Tests habe ich sogar problemlos mit einer Wait-Routine arbeiten können. Das heißt, das per Group Policies aufgerufene Test-Programm hatte ein Fenster und die Ausführung des Group Policy Scripts (und somit das Shutdown) wurde pausiert, bis ich das Fenster geschlossen habe. Es wurde zu eine Zeitpunkt ausgeführt, der vor den Windows-Shutdown-Abläufen liegt: Abmeldesound wurde erst nach meinem Test-Programm abgespielt, und es wurden keine Dienste oder Programme beendet, bevor ich das Programm geschlossen habe (reproduzierbar).

Sorry, das war schon wieder lang. Deshalb kurz: Ja, das Problem lässt sich darauf reduzieren, dass der Installer die Groupe Policy automatisch einrichten soll. Damit wär ich zufrieden.

Das bin ich auch schon angegangen, hab auch (wahrscheinlich) alle relevanten Registry-Schlüssel rausgefunden. Dann habe ich aber abgebrochen, als mir die SID Kopfzerbrechen bereitete und ich nicht sicher war, ob alle benötigten MMC-Module dadurch geladen werden, usw. Das sah wieder nach einem Overhead aus, den ich nicht beurteilen konnte. Deshalb erst mal mit euch kurzschließen, was ihr so meint.

Guido.


Edit: Kleine Ergänzungen.

Geändert von Guido Eisenbeis (16. Sep 2011 um 06:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 09:21
Da müsste sich eigentlich was mit dem WindowsScriptingHhost oder Powershell oder wie das heißt machen lassen. Ein Windows Server Admin müsste sich da auskennen. Hast du mal in entsprechenden Foren geguckt oder gefragt? Das Script könnte man ja dann vom Installer ausführen lassen. Bedenke aber, dass ab Vista Windows Programme gnadenlos abwürgte die das Runterfahren zu lange verzögern.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 09:30
Auch nicht simpel, aber machbar: WinLogon. Eine entspreche DLL schreiben, die einen Export names ShutdownHandler hat (bzw. auch LogoffHandler), im entry point DisableThreadLibraryCalls nicht vergessen, und das ganze noch in die Registry eintragen.

Geändert von CCRDude (16. Sep 2011 um 09:35 Uhr)
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 09:58
Bedenke aber, dass ab Vista Windows Programme gnadenlos abwürgte die das Runterfahren zu lange verzögern.
Ah, gut, eine wertvolle Info. Danke.


Das Script könnte man ja dann vom Installer ausführen lassen.
Das war meine Idee, als ich mit dem oben genannte Test-Programm probierte. Ich habe eine normale Installation auf meinem physikalischen Rechner gemacht, indem ich gpedit.msc aufgerufen hab und zu den entsprechenden Modulen navigiert und die Einstallungen vorgenommen habe. Dann habe ich mit RegShot172 und viel Handarbeit die relevanten Registry-Keys gesucht und exportiert. Meine "Install-Routine" hab ich dann in VirtualBox in einem jeweils "unbefleckten" Windows gestartet. Die hat dann lediglich NirCmd und ein von mir geschriebenes VBScript an die richtigen Stellen kopiert und die vorher exportierten Schüssel nun zum Importieren aufgerufen. ... Aaaaber, ... dann kamen die oben beschriebenen Probleme mit SID, Laden der MMC-Module, ...


Da müsste sich eigentlich was mit dem WindowsScriptingHhost oder Powershell oder wie das heißt machen lassen. Ein Windows Server Admin müsste sich da auskennen. Hast du mal in entsprechenden Foren geguckt oder gefragt?
Ja, geguckt habe ich, gefragt nicht. Es hat sich einfach immer mehr verzweigt und "komplexiert" (ich weiß, dass das kein Wort ist *grins*). Ich kann einfach nicht abschätzen, wieviel Aufwand da getrieben werden muss. Und ich will echt nicht die ganzen Gegebenheiten der Microsoft Managment Console und deren Zusammenhänge, Abhängigkeiten udn das Vorhandensein in den verschiedenen Windows-Versionen erforschen (z. B. gibts die MMC nicht in XP-Home) um dann am Schluss zu hören: "Mein Gott, nur um beim Runterfahren die Lautstärke runter zu regeln, hättest du dir doch nicht soviel Aufwand machen müssen. Das geht doch ganz einfach mit ???"

Wenn ich halt wüsste, wie groß der Aufwand ist, und ob es wirklich eine andere, einfachere Möglichkeit gibt, wäre mich schon geholfen. Gewünscht ist halt eine Möglichkeit, die mehr oder weniger auf alle aktuellen Win-Versionen anwendbar ist. Wenn ich's nur für mich lösen wollte, würd ich die Registry-Schlüssel hardcoden und gut iss. (Würde meinen Prinzipien widersprechen.) Aber noch geb ich die Hoffnung nicht auf, eine "ordentliche" Lösung zu finden.

Guido.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 10:45
Eine generelle Lösung wird es nicht geben, da sich ab Windows Vista das Soundmanagement grundsätzlich geändert hat. Siehe dazu auch: http://blogs.msdn.com/b/larryosterma...19/471346.aspx
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 12:14
...
(Kurzer Begründung: Zu meinen Sicherheitsvorkehrungen gehört das Restaurieren des Systems (per Ghost-Image) alle 4 - 6 Wochen, und die hier gesuchte Lösung soll erst dann in das Image, wenn ich es ausgiebig getestet habe.)
...
Hai Guido,

mache doch einen "Zwitterlösung". Du erzeugst in der GPO (Gruppenrichtlinie) einen Eintrag das beim Herunterfahre eine .CMD oder .BAT ausgeführt wird. Diese .BAT lässt Du einfach leer.
Jetzt machst Du dein Image.

Dein "Installer" muss jetzt eigentlich nur noch Dein Programm in einen Ordner legen und die .BAT ändern oder ersetzen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?

  Alt 16. Sep 2011, 13:56
Da müsste sich eigentlich was mit dem WindowsScriptingHhost oder Powershell oder wie das heißt machen lassen. Ein Windows Server Admin müsste sich da auskennen. Hast du mal in entsprechenden Foren geguckt oder gefragt? Das Script könnte man ja dann vom Installer ausführen lassen. Bedenke aber, dass ab Vista Windows Programme gnadenlos abwürgte die das Runterfahren zu lange verzögern.
Joa, mit der Powershell kannst du das Skript installieren, aber du brauchst dafür wohl ein Extra Paket ... (http://technet.microsoft.com/en-us/l.../dd759177.aspx)
Zitat:
o use the Windows PowerShell Group Policy cmdlets, you must be running either Windows Server 2008 R2 on a domain controller or on a member server that has the GPMC installed, or Windows® 7 with Remote Server Administration Tools (RSAT) installed. RSAT includes the GPMC.
Ich habe mir grad mal ein Powershellscript geschrieben, welches die Lautstärke runtersetzt. Ist schon happig .... Für WinXP geht's noch nur mit dem Skript, für Vista und 7 braucht man dann noch ne dll dazu
Aber das Skript und die dll haben zusammen 25 kB - also total wenig Overhead (.net ist hoffentlich schon im RAM ....)

Geändert von jfheins (16. Sep 2011 um 13:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz