![]() |
rausfinden welche Anwendung den Shutdown von Windows verhindert
Hallo,
ist es möglich und falls ja wie, rauszufinden welche Anwendung den Shutdown von Windows (XP) verhindert? Ich habe das Problem dass auf meinem Firmen-Laptop bei einem Benutzer meistens der Shutdown nicht funktioniert. Er wird einfach nicht ausgeführt. (also über Start --> Herunterfahren (oder Abmelden oder Neustarten)) Nutze ich diesen Code um runterzufahren funktioniert es problemlos:
Delphi-Quellcode:
Ich würde mir gerne eine Anwendung schreiben die rausfindet welche Anwendung den Shutdown verhindert.
function ExitWindows(RebootParam: Longword): Boolean;
//mögliche RebootParam: //EWX_POWEROFF or EWX_FORCE = shutdown //EWX_REBOOT or EWX_FORCE = reboot //EWX_LOGOFF or EWX_FORCE = logoff var TTokenHd : THandle; TTokenPvg : TTokenPrivileges; cbtpPrevious : DWORD; rTTokenPvg : TTokenPrivileges; pcbtpPreviousRequired : DWORD; tpResult : Boolean; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin If Win32Platform = VER_PLATFORM_WIN32_NT then begin tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd); If tpResult then begin tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid); TTokenPvg.PrivilegeCount := 1; TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; cbtpPrevious := SizeOf(rTTokenPvg); pcbtpPreviousRequired := 0; If tpResult then AdjustTokenPrivileges(TTokenHd, false, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired); end; end; Result := ExitWindowsEx(RebootParam, 0); end; Ich bin mir bewusst, dass dann diese Anwendung ebenfalls den Shutdown verhindert, aber dies ist ja gewollt. |
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Tja, es gibt tausende Möglichkeiten, soetwas zu verhindern.
Nja, erstmal könntest du allen Anwendungen die Shoutdown-Message senden. Wenn dort eine sagt "nö, ich will nich", dann isses die, welche den Shoutdown "ordentlich" unterbricht. Dabei könnte man auch gleich schauen ob irgendwe garnicht auf Messages reagiert, also hängt. (wobei man hier eventuell mit Konsolenanwendungen auspassen müßte? ) Dann vielleicht noch nachsehn, ob irgendwe ein "modales Fenster" besitzt, wie z.B. eine Messagebox, welche auf eine Benutzereingabe reagiert. (hier währe es ja witzig, wenn Windows in dem Warten-Fenster die Message und die Button anzeigt ... bei mir hatte es mal lange auf die "Wurde geändert, soll ich speichern?"-Frage des Notepad oder vom Delphi gewartet) Und dann kannst du allen noch die Terminate-Messages senden und sehen, wer sich nicht (nach einer gewissen Zeit) beendet. Und dann .... tja, lange genug warten und das machen, was windows beim "schnellen Runterfahren" macht ... alles was sich nicht beendet einfach "killen" und was nicht verschwindet, hängt wohl mit irgendwelchen Treibergeschichten fest. Und dann ein Relaise via USB ansteuern und den Strom abschalten. :stupid: Wenn da nicht irgendwann aus aus geht, sofort zum Patentamt rennen und den Nobelpreis beantragen. |
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Ich rat mal ins blaue: dexplore.exe (das Ding, was die Delphi Hilfe benutzt) ;)
|
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Normalerweise zeigt Windows doch an, wenn eine Anwendung klemmt. Wenn Windows das nicht tut, kann es auch ein Dienst sein, dessen Behinderung aber in der Ereignisanzeige vermerkt wird. Aber auch sonst kann ein Blick in die Ereignisanzeige nicht schaden. Um zumindest die Anwendungen nach einer Wartezeit zu töten, könnte dies hilfreich sein:
Code:
Der Wert von WaitToKillAppTimeout ist in Millisekunden anzugeben, hier also 20 Sekunden.
[HKEY_CURRENT_USER\Control Panel\Desktop]
"AutoEndTasks"="1" "WaitToKillAppTimeout"="20000" MfG Dalai |
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Zitat:
Nja, im VisualStudio soll ja angeblich eine neue Variante eingebaut sein, welche diesen Bug nicht mehr besitzt. ( nur warum veröffentlicht man nicht für alle diese Version? ) Egal, mit Windows 8 fährt man Rechner sowieso nicht mehr runter, also stört's bald nicht mehr. :angle: |
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Zitat:
Übrigens gibt es das herunterfahren Problem schon spätestens mit Win7 nicht mehr (Vista weiß ich nicht). |
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
OK, ob das Runterfahren noch hängt, weiß ich nicht (wir fahren unsere Rechner selten runter),
aber die dexplore selber hängt auf jeden Fall manchmal immernoch (Win7, Server2008R2 und WHS2011) |
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Zitat:
|
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Zitat:
|
AW: rausfinden welche Anwendung den Shutdown von Windows verhindert
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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