![]() |
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 ![]() 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. |
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.
|
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.
|
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
![]() 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:
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. |
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.
|
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
![]() |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
Zitat:
Zitat:
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. |
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:
![]() |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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. |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
![]() Zitat:
Aber das Skript und die dll haben zusammen 25 kB - also total wenig Overhead :stupid: (.net ist hoffentlich schon im RAM ....) |
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:
Zitat:
Zitat:
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. |
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.
|
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:
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.
<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> |
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.
|
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.
|
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. :?
|
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.
|
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
Zitat:
Zitat:
Zitat:
Guido. |
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 |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
Wie sieht deine Lösung aus? |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
Z.Zt. brauche ich kein Programm, das beim Herunterfahren noch schnell was ändert :oops: OMG!!! |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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. |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
Zitat:
(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: |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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:
Und seine Antwort war:
Wie sieht deine Lösung aus?
Code:
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!?
Frag' doch 'mal Luckie, diesen NonVCL-Mod mit eigener Sourcecode-Homepage
Z.Zt. brauche ich kein Programm, das beim Herunterfahren noch schnell was ändert Zitat:
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. |
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.
|
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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:
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 ![]() 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. |
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:
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:
[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
Delphi-Quellcode:
Diese beiden exportieren Funktionen werden dann halt einfach jedesmal aufgerufen, wenn sich ein Benutzer abmeldet oder der Rechner runterfährt.
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. |
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: |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Wenn das ginge, könnte man das Runterfahren ja ganz blockieren.
|
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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. |
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?
|
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:
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:
![]() Guido. |
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. |
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?
|
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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:
|
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
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. |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
![]() D.h. Du kannst in Ruhe alles machen, was gemacht werden soll, ohne fürchten zu müssen, dass Windows mittlerweile den SCM killt. |
AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Zitat:
|
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:
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:
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:
Das hört sich genau so an, wie ich es haben will. Die verlinkte Seite bestätigt das auch ungefähr so: Zitat:
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:
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. |
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 21:40 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