Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren? (https://www.delphipraxis.net/163112-shutdown-folder-oder-wie-starte-ich-ein-prog-beim-win-runterfahren.html)

Guido Eisenbeis 16. Sep 2011 00:32


Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
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 :oops: ), 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. :shock: :roteyes:


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". :wink:
(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.

Iwo Asnet 16. Sep 2011 01:01

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
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.

Luckie 16. Sep 2011 02:34

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Das Problem lässt sich also darauf reduzieren, dass der Installer die Groupe Policy automatisch einrichten soll.

Guido Eisenbeis 16. Sep 2011 05:55

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

Zitat von Iwo Asnet (Beitrag 1124755)
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 :-D ) 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. :-D


Zitat:

Zitat von Luckie (Beitrag 1124757)
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. :-D 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. :-D

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.

Luckie 16. Sep 2011 08:21

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
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.

CCRDude 16. Sep 2011 08:30

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
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.

Guido Eisenbeis 16. Sep 2011 08:58

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

Zitat von Luckie (Beitrag 1124784)
Bedenke aber, dass ab Vista Windows Programme gnadenlos abwürgte die das Runterfahren zu lange verzögern.

Ah, gut, eine wertvolle Info. Danke.


Zitat:

Zitat von Luckie (Beitrag 1124784)
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, ...


Zitat:

Zitat von Luckie (Beitrag 1124784)
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. :wink:

Guido.

Luckie 16. Sep 2011 09:45

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
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

Sharky 16. Sep 2011 11:14

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

Zitat von Guido Eisenbeis (Beitrag 1124750)
...
(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.

jfheins 16. Sep 2011 12:56

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

Zitat von Luckie (Beitrag 1124784)
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 :stupid: (.net ist hoffentlich schon im RAM ....)

Guido Eisenbeis 16. Sep 2011 22:09

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Leute, ich bin überwältigt von der Flut an Vorschlägen. Ich versuche möglichst knapp auf jeden einzugehen.

Zitat:

Zitat von CCRDude (Beitrag 1124785)
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.

Hab mich oberflächlich eingelesen. Vereinfacht ausgedrückt, siehts nach einem systemweiten Hook aus. Prinzipiell ist dies der Vorschlag, der mir am vielversprechendsten aussieht um das eigenliche Problem anzugehen. Nachteil: "Aus großer Macht folgt große Verantwortung." Ein Hook ist eine mächtige Sache. Man kann damit heftige Sachen machen. Aber auch heftig blöde Querschläger erzeugen. Wirklich nicht simpel. Hast du da was an Code für mich, auf den ich aufbauen kann?


Zitat:

Zitat von Sharky (Beitrag 1124835)
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.

Nicht übel! Vorteil: Würde für (m)eine konkrete Win-Installation / Image was bringen. Nachteil: Es ist nicht für andere geeignet, wäre also "egoistisch". :evil: Nee im Ernst: Eine Lösung für mich allein habe ich. Ich wende mich hier ans Forum, um eine Lösung zu finden, die auch andere nutzen können (siehe Posting #1: Doppelklick -> ein paarmal "Weiter" -> und "Fertig".) Werd ich aber mal im Hinterkopf behalten.


Zitat:

Zitat von Luckie (Beitrag 1124811)
Eine generelle Lösung wird es nicht geben, da sich ab Windows Vista das Soundmanagement grundsätzlich geändert hat. ...

Zitat:

Zitat von jfheins (Beitrag 1124859)
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)

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 ...

Auch euch danke für die Antworten. Leider nutzen sie mir nicht viel, denn es geht mir um das (saubere) Starten eine Programms beim Runterfahren, nicht um die System-Lautstärke (siehe Titel des Threads und Posting #1 beim Punkt "Gesuchte Hilfe").

Ich hoffe ich hab niemanden vergessen!?


Klartext: Ich suche eine (saubere) Möglichkeit, um beim Runterfahren von Windows ein Programm zu starten. Sonst nix. (Vorerst. Dann seh ich weiter.)


Immernoch scheint die Lösung per Group Policy am besten. Wenn also niemand eine andere Lösung hat, werde ich einen anderen Thread eröffnen und dort nach dem Einrichten von Group Policies per Code fragen. Eine andere Lösung ist aber nur sinnvoll, wenn ich dafür nicht erst Gehirnchirugie studieren muss. Will sagen: Powershel, .Net-Framework, DLL schreiben für systemweiten Hook, WM_QUERYENDSESSION-Message abfangen, einen Windows Server Admin suchen, usw. ist mir alles zu heftig. Das eine ist zu viel Installation und Aufwand für diese simple Aufgabe, das andere ist für mich nicht einzuschätzen, wieweit die Stabilität des Systems beeinflusst wird. Ich habe bis jetzt über 20 Stunden recherchiert (das Posten hier nicht mitgerechnet) und über 8 Stunden Tests gefahren, um eine Weg zu finden, entsprechende Group Policies per Code zu etablieren. Und ich bin nicht weiter, als nach den ersten 2 Minuten, als ich die Group-Policies-Möglichkeit zum ersten Mal fand.


Guido.

Luckie 16. Sep 2011 22:11

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Na ja, wenn du eine Rakete bauen willst, wirst du nicht um hin kommen Raktentechnik zu lernen.

Union 16. Sep 2011 22:39

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Also mit GPO ist das wieder Betriebssystemabhängig. Z.b. musst Du auf einem Server der Domaincontroller ist das in den Domaincontroller-Richtlinien eintragen. Sowas sieht dann so aus (Beispiel für ein Startup-Script, ansonsten Type=Shutdown):
Code:
<Computer>
    <VersionDirectory>40</VersionDirectory>
    <VersionSysvol>40</VersionSysvol>
    <Enabled>true</Enabled>
    <ExtensionData>
      <Extension xmlns:q1="http://www.microsoft.com/GroupPolicy/Settings/Scripts" xsi:type="q1:Scripts">
        <q1:Script>
          <q1:Command>C:\scripts\enablecache.cmd</q1:Command>
          <q1:Type>Startup</q1:Type>
          <q1:Order>0</q1:Order>
          <q1:RunOrder>PSNotConfigured</q1:RunOrder>
        </q1:Script>
      </Extension>
      <Name>Scripts</Name>
    </ExtensionData>
    <ExtensionData>
An Deiner Stelle würde ich wirklich das Abfangen der QueryEndsession mal versuchen. Ein Miniprogramm (z.b. in der Taskleiste) und es funktioniert. Wir verwenden das in allen unseren Anwendungen um zu verhindern dass die Benutzer die Programme durch versehentliches Abmelden killen.

Luckie 16. Sep 2011 22:43

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Und noch ein Prozess mehr der 99,999% der Computerzeit läuft und nichts tut außer Ressourcen verbrauchen, nur um dann in den verbleiben 0,001% der Computerzeit etwas zu tun. Ökomomisch ist anders.

Union 16. Sep 2011 23:00

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Naja, besser so als mit GPO die nicht überall funktioniert. Und die Arbeitsspeicher- sowie die CPU-Belastung sind quasi nicht existent.

Luckie 16. Sep 2011 23:42

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Kleinvieh macht auch Mist. Leider denken viele Programmierer so und dann wundert sich der Anwender warum sein Windows schon wieder so lahm ist. Und dann ist es kein wunder warum Windows so oft neu installiert wird. :?

Union 17. Sep 2011 00:18

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Ich achte normalerweise auch sehr auf so etwas. Und genau deshalb finde ich es unbedenklich. Es ist doch nur ein Listener der eine Windows Nachricht abfängt. Und Windows sendet die sowieso an alle, und das auch nur beim Abmelden / Herunterfahren.

Guido Eisenbeis 17. Sep 2011 01:20

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

Zitat von Luckie (Beitrag 1124951)
Und noch ein Prozess mehr der 99,999% der Computerzeit läuft und nichts tut außer Ressourcen verbrauchen, nur um dann in den verbleiben 0,001% der Computerzeit etwas zu tun. Ökomomisch ist anders.

Dem stimme ich zu, deshalb wäre Group Policy günstig gewesen, da die MMC (vermutlich) sowieso läuft.


Zitat:

Zitat von Union (Beitrag 1124952)
Naja, besser so als mit GPO die nicht überall funktioniert. Und die Arbeitsspeicher- sowie die CPU-Belastung sind quasi nicht existent.

Dem stimme ich auch zu. Verflixt! Alles hat Vor- und Nachteile. Es ist schon übel, wenn eine (GPO-)Lösung so speziell und von allem möglichen abhängig ist.


Zitat:

Zitat von Union (Beitrag 1124950)
Also mit GPO ist das wieder Betriebssystemabhängig. Z.b. musst Du auf einem Server der Domaincontroller ist das in den Domaincontroller-Richtlinien eintragen. Sowas sieht dann so aus (Beispiel für ein Startup-Script, ansonsten Type=Shutdown): ...

Was ist das denn für ein Script, und wie wird es verwendet? Bei mir gibt es keine Domäne, nur mehrere private PCs in einer Arbeitsgruppe bei mir zu Hause (und bei Bekannten natürlich genauso).


Zitat:

Zitat von Union (Beitrag 1124950)
An Deiner Stelle würde ich wirklich das Abfangen der QueryEndsession mal versuchen. Ein Miniprogramm (z.b. in der Taskleiste) und es funktioniert. Wir verwenden das in allen unseren Anwendungen um zu verhindern dass die Benutzer die Programme durch versehentliches Abmelden killen.

Werd ich auch tun. Welche Erfahrungen hast du denn damit gemacht? Funktioniert das bei euch problemlos, oder gibt es Querschläger? Wie schon geschrieben, kann man da doch nicht sicherstellen, dass die Message beim eigenen Programm ankommt, bevor sich vielleicht schon andere Programme oder Dienste beendet haben. Oder doch? :gruebel:

Guido.

Gustav.R 17. Sep 2011 02:31

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Da wir alle Assembler-Programmierer auf einem 8-Bit-C64 sind, müssen wir um jedes halbe Bit feilschen oder was :evil:

Warum kein "unsichtbares", rudimentäres NonVCL-Programm im Autostart, das beim Befehl zum Windows-Runterfahren das Programm zur Lautstärkenwiederherstellung startet?

Ganz einfach von hinten durch die Brust ins Auge :thumb:

KISS (Keep It Simple, Stupid).

GG

Guido Eisenbeis 17. Sep 2011 05:48

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

Zitat von Gustav.R (Beitrag 1124961)
Warum kein "unsichtbares", rudimentäres NonVCL-Programm im Autostart, das beim Befehl zum Windows-Runterfahren das Programm zur Lautstärkenwiederherstellung startet?


Wie sieht deine Lösung aus?

Gustav.R 17. Sep 2011 10:20

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

Zitat von Guido Eisenbeis (Beitrag 1124963)
Zitat:

Zitat von Gustav.R (Beitrag 1124961)
Warum kein "unsichtbares", rudimentäres NonVCL-Programm im Autostart, das beim Befehl zum Windows-Runterfahren das Programm zur Lautstärkenwiederherstellung startet?


Wie sieht deine Lösung aus?

Frag' doch 'mal Luckie, diesen NonVCL-Mod mit eigener Sourcecode-Homepage :thumb:

Z.Zt. brauche ich kein Programm, das beim Herunterfahren noch schnell was ändert :oops:

OMG!!!

Guido Eisenbeis 17. Sep 2011 16:53

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

Zitat von Gustav.R (Beitrag 1124987)
Frag' doch 'mal Luckie, diesen NonVCL-Mod mit eigener Sourcecode-Homepage :thumb:

Z.Zt. brauche ich kein Programm, das beim Herunterfahren noch schnell was ändert :oops:

OMG!!!


Dann bist du hier falsch! Ich brauche Lösungen, keine sarkastischen, beleidigenden und sinnlosen Beiträge! Versuchs doch mal im Bereich "Klatsch und Tratsch".

Und bitte: Nicht auch noch hierauf antworten. Wenn du nichts sinnvolles beizutragen hast: Lass es einfach!

Guido.

Sir Rufo 17. Sep 2011 19:47

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

Zitat von Guido Eisenbeis (Beitrag 1124963)
Zitat:

Zitat von Gustav.R (Beitrag 1124961)
Warum kein "unsichtbares", rudimentäres NonVCL-Programm im Autostart, das beim Befehl zum Windows-Runterfahren das Programm zur Lautstärkenwiederherstellung startet?


Wie sieht deine Lösung aus?

Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125035)
Zitat:

Zitat von Gustav.R (Beitrag 1124987)
Frag' doch 'mal Luckie, diesen NonVCL-Mod mit eigener Sourcecode-Homepage :thumb:

Z.Zt. brauche ich kein Programm, das beim Herunterfahren noch schnell was ändert :oops:

OMG!!!


Dann bist du hier falsch! Ich brauche Lösungen, keine sarkastischen, beleidigenden und sinnlosen Beiträge! Versuchs doch mal im Bereich "Klatsch und Tratsch".

Und bitte: Nicht auch noch hierauf antworten. Wenn du nichts sinnvolles beizutragen hast: Lass es einfach!

Guido.

Wenn du die Antwort nicht verträgst, dann stell doch auch die Frage nicht.
(Du hast ihn direkt gefragt)

Zumal der Verweis auf Luckie völlig berechtigt ist, da der sehr viel im nonVCL Bereich aktiv ist.
Da könnte man sich aus seinen Quellen bestimmt was zusammenbauen.
(da ist so viel, wenn da so etwas in der Art nicht sogar schon dabei ist ;) )
bzw. ihn fragen, wenn das nicht so klappt, wie man es sich vorgestellt hat.

In diesem Sinne: "Der tut nix, der will nur helfen" :mrgreen:

Guido Eisenbeis 18. Sep 2011 03:09

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

Zitat von Sir Rufo (Beitrag 1125058)
Wenn du die Antwort nicht verträgst, dann stell doch auch die Frage nicht.
(Du hast ihn direkt gefragt)


Und wenn du keine Ahnung hast, um was es geht, da halt dich doch bitte raus. Denn einen Sinn ergibt dein "Beitrag" echt nicht. Was soll ich ihn denn deiner Meinung nach "direkt gefragt" haben, auf das ich die Antwort nicht vertrage?

Die einzige Frage, die ich ihm gestellt habe, war:
Code:
Wie sieht deine Lösung aus?
Und seine Antwort war:
Code:
Frag' doch 'mal Luckie, diesen NonVCL-Mod mit eigener Sourcecode-Homepage

Z.Zt. brauche ich kein Programm, das beim Herunterfahren noch schnell was ändert
Was gibts daran nicht zu vertragen? Lucky beteiligt sich schon seit Anfang an daran, eine Lösung zu finden (siehe ab Posting #3). Ich kann keinen Sinn im Vorschlag erkennen, Lucky zu fragen, wenn er doch schon die ganze Zeit mitmacht!?


Zitat:

Zitat von Sir Rufo (Beitrag 1125058)
Zumal der Verweis auf Luckie völlig berechtigt ist, da der sehr viel im nonVCL Bereich aktiv ist.
Da könnte man sich aus seinen Quellen bestimmt was zusammenbauen.
(da ist so viel, wenn da so etwas in der Art nicht sogar schon dabei ist ;) )
bzw. ihn fragen, wenn das nicht so klappt, wie man es sich vorgestellt hat.


Offensichtlich hast du überhaupt nicht gelesen, was in diesem Thread steht, sondern willst nur stänkern!? Denn sonst wüsstest du, dass Lucky schon längst involviert ist. Oder krieg ich hier irgendwas nicht auf die Reihe? Sollte ich mich irren, tuts mir leid. Aber für mich sieht das so aus.


Edit: War verärgert, hab mich jetzt beruhigt. Hab ein paar zu heftige Stellen geändert.

CCRDude 18. Sep 2011 11:12

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Ich verweise nochmal vorsichtig auf meinen Tipp weiter oben - Winlogon-DLLs sind einfach erstellt, und haben den Vorteil, daß sie nicht von Windows beendet werden, wie Windows halt so versucht, Programme beim Herunterfahren zu beenden.

Guido Eisenbeis 18. Sep 2011 16:55

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

Zitat von Iwo Asnet (Beitrag 1124755)
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.


Hab ich gemacht. Das funktioniert auch in ein paar Tests. Es ist aber irgendwie nur eine Notlösung, da hierbei nur der konkrete Fall mit dem Runtersetzen der Lautstärke zum Erfolg führt. Es ist auch bei Result := True schön zu sehen, wie rund um das eigene Programm alle anderen beendet werden: Alle sichtbaren Fenster werden geschlossen, und im Systray macht es plop, plop, plop und ein Programm nach dem aderen verschwindet. Unter anderem auch das Antiviren-Programm.

Deshalb Notlösung, weil das nicht so "sauber" ist. Ein anderes Programm, das etwas länger braucht (z. B. zum Aufräumen in Temp-Ordnern oder das vielleicht noch eine kleine Sicherung der wichtigsten Daten machen soll), untergräbt die Sicherheitsmaßnahmen. Vielleicht kann es auch garnicht richtig laufen, weil schon Dienste und Programme beendet sind, die es braucht.

Wie gesagt, ich kann den Umfang nicht einschätzen, aber es wäre eine Notlösung.


Zitat:

Zitat von CCRDude (Beitrag 1125101)
Ich verweise nochmal vorsichtig auf meinen Tipp weiter oben - Winlogon-DLLs sind einfach erstellt, und haben den Vorteil, daß sie nicht von Windows beendet werden, wie Windows halt so versucht, Programme beim Herunterfahren zu beenden.


Das habe ich nicht vergessen. :-D Aber offen gesagt, wird mir der Aufwand langsam zu hoch. Zu dieser Lösung habe ich keine Code-Beispiele, und ich habe bisher nur vielleicht 3 oder 4 DLLs programmiert. Ich müsste also praktisch bei Null anfangen und ebenso wie beim Thema "Winlogon Notification Packages", das du freundlicherweise verlinkt hast.

Wenn du ein Code-Beispiel oder einen Link hast, und / oder mir was sagen kannst über die Abläufe und Wirkungen dieser Lösung (z. B. ob da andere Progs beendet werden, wie bei QUERYENDSESSION), könnte ich den Aufwand vielleicht ein wenig überblicken.

Guido.

CCRDude 19. Sep 2011 07:53

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Klar kann ich Dir dazu auch etwas mehr liefern, war nur am Wochenende nicht am Entwicklungsrechner :)

In InnoSetup installiere ich meine DLL so:
Code:
[Files]
Source: WinLogonExample.dll; DestDir: {win}; Flags: restartreplace overwritereadonly uninsrestartdelete

[Registry]
; http://msdn.microsoft.com/en-us/library/aa379402(VS.85).aspx
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WinLogonExample; ValueType: expandsz; ValueName: DllName; ValueData: WinLogonExample.dll; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WinLogonExample; ValueType: string; ValueName: Logoff; ValueData: LogoffHandler
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WinLogonExample; ValueType: string; ValueName: Shutdown; ValueData: ShutdownHandler
Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WinLogonExample; ValueType: dword; ValueName: Asynchronous; ValueData: 1
Oder anders gesagt, das sind drei bis vier Registry-Einträge, die nötig sind. Die Namen der Handler müssen identisch mit den DLL-Exports sein, Du findest sie hier wieder:

Delphi-Quellcode:
library WinLogonExample;

uses
  SysUtils,
  Classes,
  Messages,
  Windows;

type
   TFnMsgeCallback = function(bVerbose: Boolean; lpMessage: PWideChar): Cardinal; stdcall;

   TWlxNotificationInfo = record
      Size: Cardinal;
      Flags: Cardinal;
      UserName: PWideChar;
      Domain: PWideChar;
      WindowStation: PWideChar;
      Token: Cardinal;
      Desktop: Cardinal;
      StatusCallback: TFnMsgeCallback;
   end;
   PWlxNotificationInfo = ^TWlxNotificationInfo;

{$R *.res}

procedure LogoffHandler(Info: PWlxNotificationInfo); stdcall;
begin
   // actions take place here
end;

procedure ShutdownHandler(Info: PWlxNotificationInfo); stdcall;
begin
   // or here
end;

procedure EntryPointProc(reason: integer);
begin
   case reason of
      DLL_PROCESS_ATTACH: begin
         DisableThreadLibraryCalls(hInstance);
      end;
      DLL_THREAD_ATTACH: begin
      end;
      DLL_PROCESS_DETACH: begin
      end;
      DLL_THREAD_DETACH: begin
      end;
   end;

end;

exports
   LogoffHandler,
   ShutdownHandler;

begin
   DllProc := @EntryPointProc;
   DllProc(DLL_PROCESS_ATTACH);
end.
Diese beiden exportieren Funktionen werden dann halt einfach jedesmal aufgerufen, wenn sich ein Benutzer abmeldet oder der Rechner runterfährt.

Leanahtan 19. Sep 2011 10:14

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Mag sein, dass der Vorschlag Blödsinn ist - dann einfach ignorieren. Wäre es nicht möglich, statt zu versuchen sich ans Herunterfahren anzuhängen (mit den oben geschilderten Problemen) ein Programm zu schreiben, welches zunächst die gewünschte Aufgabe (z.B. Lautstärke runterregeln) ausführt, und danach die Anweisung zum runterfahren erteilt. Wenn man dann den Rechner ausschalten will, geht man nicht über start->herunterfahren, sondern startet das eigene Programm. Eventuell könnte man die Verknüopfung zum Herunterfahren ja auch auf dieses Programm umlenken.

Naja, wie gesagt, wenns Blödsinn ist, bitte nicht hauen, sondern einfach ignorieren :roll:

Luckie 19. Sep 2011 10:24

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Wenn das ginge, könnte man das Runterfahren ja ganz blockieren.

Leanahtan 19. Sep 2011 10:44

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

Zitat von Luckie (Beitrag 1125279)
Wenn das ginge, könnte man das Runterfahren ja ganz blockieren.

Naja, wenn du bei der Umlenkung der Verknüpfung an den Anmeldebildschirm denkst, bzw. an den Startmenü-Eintrag (darum gins mir jedenfalls), dann ist das doch sowieso möglich (war jedenfalls früher mal so)? Schließlich kann man die Einträge doch per Registry ausblenden, damit z.B. bei einem öffentlich zugänglichen Rechner kein Unbefugter den Rechner ausschalten kann.

Aber wenn man keinen Zugriff auf die Verknüpfung im Startmenü hat, würde es ja auch ein Button in der Taskleiste tun. Ist halt die Frage, wofür genau das verwendet werden soll. Wenn noch umfrangreiche Aufgaben durchgeführt werden müssen (Archivierung, Temp-Ordner leeren etc.) würde man so ziemlich einfach das Problem umgehen, dass Windows beim Shutdown alle laufenden Programme beendet. Wenn man natürlich sicher sein will, dass eine Funktion immer ausgeführt wird, egal wie der Benutzer das System herunterfährt, dann wäre mein Vorschlag kein Lösungsansatz.

ConnorMcLeod 19. Sep 2011 14:34

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Wie wäre es mit einem Service, das auf SERVICE_CONTROL_PRESHUTDOWN entsprechend reagiert?

Guido Eisenbeis 19. Sep 2011 16:04

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

Wow, vielen Dank! :-D Sieht schonmal vielversprechend aus. Werd ich diese Woche ausprobieren.

Schon vorab eine kurze Frage: Der Registry-Wert "Asynchronous" ist auf 1 gesetzt. Bedeuted das, dass wie beim "WM_QUERYENDSESSION"-Code das Runterfahren NICHT angehalten wird und alle anderen Programme und Dienste beendet werden?


Zitat:

Zitat von Leanahtan (Beitrag 1125276)
... ein Programm zu schreiben, welches zunächst die gewünschte Aufgabe ... ausführt, und danach die Anweisung zum runterfahren erteilt. Wenn man dann den Rechner ausschalten will, geht man nicht über start->herunterfahren, sondern startet das eigene Programm.


Da sich ja jemand Gedanken über das Problem gemacht hat, ist das sicherlich kein Blödsinn. :) Ich habe diese Antwort sogar erwartet, da sie bei meiner Recherche (vor dem posten in der DP) begegnete. Bei der Recherche habe ich unzählige Lösungs-Vorschläge gefunden, die aber immer den ein und selben Inhalt hatten (besser gesagt, es waren immer die zwei gleichen): Zum einen Group Policies und zum anderen die von dir genannte Umgehung per eigenem "Ausschalt"-Programm.

Wie du schon vermutet hast, erfüllt es leider nicht den Zweck der Lösung, die ich suche. Es soll auf das Runterfahren reagiert werden, egal wie es ausgelöst wird und was es auslöst. So soll es beim Drücken des Buttons am PC ausgeführt werden, genauso wie beim Win-Neustart nach einer Install-Routine. Oder nachdem man vom blöden Win-Update genervt wurde, das man schon siebenundzwölfzig Mal weggeklickt hat, während man youtube-Videos kuckt.

Zitat von Hugo Egon Balder: "Eine wirklich schöne Antwort, ... aber für eine andere Frage."


Zitat:

Zitat von ConnorMcLeod (Beitrag 1125342)
Wie wäre es mit einem Service, das auf SERVICE_CONTROL_PRESHUTDOWN entsprechend reagiert?

Klingt zunächst auch mal interessant. :) Was wäre da denn der Vorteil gegenüber der "WM_QUERYENDSESSION"-Lösung? (Details siehe Posting #2)


Guido.

turboPASCAL 19. Sep 2011 16:54

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

Ich hatte das selbe "Problem" mit der Lautstärke und den Kopfhörern.

Vor ein paar Jahren hatte ich mit 'ne kleine "App" geschrieben die
recht zuverlässig funktioniert, auch wenn es nur per Autostart bzw.
Aufgabenplanung gestartet werden musss.

Gedacht war es für/ab Windows XP, Vista & 7.

Union 19. Sep 2011 16:56

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Kannst Du auch was zu der Lösung sagen, evtl. mit relevanten Sourceauszügen?

jfheins 19. Sep 2011 17:06

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

Zitat von turboPASCAL (Beitrag 1125363)
Moin,
Ich hatte das selbe "Problem" mit der Lautstärke und den Kopfhörern.
Vor ein paar Jahren hatte ich mit 'ne kleine "App" geschrieben die
recht zuverlässig funktioniert, auch wenn es nur per Autostart bzw.
Aufgabenplanung gestartet werden musss.
Gedacht war es für/ab Windows XP, Vista & 7.

Wenn ich das hier richtig sehe, geht es ja nicht mehr um eine konkrete lösung der Lautstärkeanpassung, sondern vor allem darum wie man diese korrekt in einem Setup verpacken und installieren kann.
Insofern ist die Lösung mit Hilfe der Aufgabenplanung zur ganz nett aber es Bedarf auch einer Möglichkeit diesen Eintrag in der Aufgabenplanung automatisiert zu erstellen.
ich hoffe ich habe das jetzt so richtig wiedergegeben - zumindest hieß es in Post #1
Zitat:

Das Programm soll möglichst mit einer Installations-Routine installiert werden können, z. B. Doppelklick -> ein paarmal "Weiter" -> und "Fertig".
:angel2:

himitsu 19. Sep 2011 17:15

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

noch schnell ein Programm beim Herunterfahren starten
Bei QueryShutdown vielleicht grade noch so möglich,
aber wenn der PC bereits am Runterfahren ist, dann meckert Windows schonmal rum, wenn sich da ein Programm starten will und verhindert dieses dann auch noch.

ConnorMcLeod 19. Sep 2011 20:49

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

Zitat von Guido Eisenbeis (Beitrag 1125353)
Was wäre da denn der Vorteil gegenüber der "WM_QUERYENDSESSION"-Lösung

Dass Windows bzw der SCM wirklich auf das Beenden des Dienstes wartet. Siehe hier.

D.h. Du kannst in Ruhe alles machen, was gemacht werden soll, ohne fürchten zu müssen, dass Windows mittlerweile den SCM killt.

CCRDude 20. Sep 2011 07:23

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

Zitat von Guido Eisenbeis (Beitrag 1125353)
Schon vorab eine kurze Frage: Der Registry-Wert "Asynchronous" ist auf 1 gesetzt. Bedeuted das, dass wie beim "WM_QUERYENDSESSION"-Code das Runterfahren NICHT angehalten wird und alle anderen Programme und Dienste beendet werden?

Oh, da hast Du recht! Das Beispiel habe ich aus Code kopiert/angepasst, den wir hier für einen Logon-Handler verwenden, da war die parallele Bearbeitung (Winlogon startet das dann in eigenem Thread) praktisch - Du müsstest das wohl auf 0 setzen, klar :)

Guido Eisenbeis 21. Sep 2011 04:32

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

diesmal sind echt wieder einige interessante Antworten dabei, da "musste" ich mir sogar erst mal einen Kaffee holen. :-D Vielen Dank an alle!

Ich versuche alle zu beantworten und dabei "ähnliche Elemente zu gruppieren". (kleines Wortspiel *grins* )


Zitat:

Zitat von jfheins (Beitrag 1125365)
Wenn ich das hier richtig sehe, geht es ja nicht mehr um eine konkrete lösung der Lautstärkeanpassung, sondern vor allem darum wie man diese korrekt in einem Setup verpacken und installieren kann.
...
ich hoffe ich habe das jetzt so richtig wiedergegeben - zumindest hieß es in Post #1
Zitat:

Das Programm soll möglichst mit einer Installations-Routine installiert werden können, z. B. Doppelklick -> ein paarmal "Weiter" -> und "Fertig".
:angel2:

Das hast du soweit richtig wiedergegeben. Ich hab extra den weitgefassten Begriff "Install-Routine" gewählt, weil mir sogar eine Batch-Datei genügen würde. ... Das ist schonmal 'ne gute Überleitung zum nächsten Posting ->


Zitat:

Zitat von turboPASCAL (Beitrag 1125363)
... Vor ein paar Jahren hatte ich mit 'ne kleine "App" geschrieben die
recht zuverlässig funktioniert, auch wenn es nur per Autostart bzw. Aufgabenplanung gestartet werden musss.


Gute Sache soweit: :-D Es es ist "schon fertig" und "funktioniert" bei einem Test (Querschläger unbekannt). Diese APP braucht also nur in einen Programme-Ordner und eine Verknüpfung in den Autostart-Ordner kopiert zu werden. -> Hier könnte eine simple Batch als Install-Routine dienen.

Weniger gut: :( Closed Source. Somit kann ich also zum einen nicht einschätzen, ob es die bekannten "Querschläger" erzeugt: Runterfahren läuft weiter, andere Progrs und Dienste werden beendet, ... Zum anderen kann ich das erweiterte Ziel nicht umsetzen, was nämlich ein Shutdown-Ordner wäre, mit dem auch andere Aufräum- und Sicherungsarbeiten durchgeführt werden können.

Ich will aber nicht undankbar sein: Hättest du die App am Anfang meines Threads gepostet, hätte ich vielleicht sogar einfach nur das genommen, um den weiteren Aufwand zu vermeiden.

Zitat:

Zitat von Union (Beitrag 1125364)
Kannst Du auch was zu der Lösung sagen, evtl. mit relevanten Sourceauszügen?


Dem kann ich mich nur anschließen. Um die Lösung wirklich auszuschöpfen, müsste ich "reinschauen" können. (siehe oben "Closed Source") Ich würde mich freuen, wenn du uns den Code zeigen würdest. :)


Zitat:

Zitat von CCRDude (Beitrag 1125430)
Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125353)
... "Asynchronous" ist auf 1 gesetzt. Bedeuted das, dass wie beim "WM_QUERYENDSESSION"-Code das Runterfahren NICHT angehalten wird und alle anderen Programme und Dienste beendet werden?

...

Du müsstest das wohl auf 0 setzen, klar :)

Hätte ich auch so gedacht, bin da jetzt nicht aber nicht mehr so sicher, wegen folgender Infos:


Zitat:

Zitat von ConnorMcLeod (Beitrag 1125397)
Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125353)
Was wäre da denn der Vorteil gegenüber der "WM_QUERYENDSESSION"-Lösung

Dass Windows bzw der SCM wirklich auf das Beenden des Dienstes wartet. Siehe hier.

D.h. Du kannst in Ruhe alles machen, was gemacht werden soll, ohne fürchten zu müssen, dass Windows mittlerweile den SCM killt.


Das hört sich genau so an, wie ich es haben will. Die verlinkte Seite bestätigt das auch ungefähr so:

Zitat:

... fordern Sie beim SCM eine Benachrichtigung vor dem Herunterfahren an. Der SCM wartet (möglicherweise auf unbestimmte Zeit) darauf, dass alle Dienste, die so benachrichtigt wurden, heruntergefahren werden, bevor der traditionelle Prozess zum Herunterfahren von Diensten beginnt.

Das entspricht meiner Vorstellung von einer sauberen Möglichkeit, Programme vorm Runterfahren auszuführen.

Das war die gute Nachricht. Jetzt die weniger guten: Den Aufwand kann ich nicht einschätzen, um einen solchen Dienst zu entwickeln, der dann auch noch per Named Pipe mit dem SCM kommuniziert. Der SCM klopft AFAIK alle paar Sekunden bei dem Dienst an, ob jetzt runtergefahren werden kann. (So ähnlich wie Kinder auf der Rückbank: "Sind wir jetzt da? ... Sind wir jetzt da? :mrgreen: ). Dann bin ich mir auch unsicher, ob es bei XP überhaupt funktioniert:

Zitat:

Windows Vista hat eine neue Benachrichtigung vor dem Herunterfahren eingeführt, die Dienste erhalten können.

Kann da jemand was drüber sagen?


Ansonsten schonmal ein Resümee: Es wurde zu einigen Problem-Punkten schon Lösungen vorgeschlagen, mit denen ich soweit zufrieden bin. :thumb:

Somit bleibt noch ein Problem übrig: Gesucht ist eine saubere Möglichkeit, ein Programm VOR dem Abmelden / Runterfahren auszuführen.


Ein guter Kandidat scheint der Vorschlag "Winlogon-DLL" als Dienst zu sein. Ich würde mich über weitere Infos freuen, insbesondere wenn jemand eigene Erfahrungen hat. :-D
Einen mundgerecht aufbereiteten Source-Code würd ich aber auch nehmen. :mrgreen:


Guido.


Edit: Kleine Ergänzung eingefügt.

jfheins 21. Sep 2011 15:35

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
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 ...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Seite 1 von 2  1 2      

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