AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi rausfinden welche Anwendung den Shutdown von Windows verhindert

rausfinden welche Anwendung den Shutdown von Windows verhindert

Ein Thema von Helmi · begonnen am 21. Jun 2012 · letzter Beitrag vom 23. Jun 2012
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 21. Jun 2012, 18:38
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:
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 würde mir gerne eine Anwendung schreiben die rausfindet welche Anwendung den Shutdown verhindert.
Ich bin mir bewusst, dass dann diese Anwendung ebenfalls den Shutdown verhindert, aber dies ist ja gewollt.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#2

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 21. Jun 2012, 19:23
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.
Wenn da nicht irgendwann aus aus geht, sofort zum Patentamt rennen und den Nobelpreis beantragen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 21. Jun 2012, 19:28
Ich rat mal ins blaue: dexplore.exe (das Ding, was die Delphi Hilfe benutzt)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.679 Beiträge
 
Delphi 5 Professional
 
#4

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 21. Jun 2012, 19:28
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:
[HKEY_CURRENT_USER\Control Panel\Desktop]
"AutoEndTasks"="1"
"WaitToKillAppTimeout"="20000"
Der Wert von WaitToKillAppTimeout ist in Millisekunden anzugeben, hier also 20 Sekunden.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#5

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 21. Jun 2012, 19:32
Ich rat mal ins blaue: dexplore.exe (das Ding, was die Delphi Hilfe benutzt)
Wobei ich immernoch nicht weiß, wieso man dort überhaupt einen Code einbaut, der das Runterfahren behindert.
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 22. Jun 2012, 14:37
Ich rat mal ins blaue: dexplore.exe (das Ding, was die Delphi Hilfe benutzt)
Wobei ich immernoch nicht weiß, wieso man dort überhaupt einen Code einbaut, der das Runterfahren behindert.
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.
Wahrscheinlich hat Emba nicht genügend Ressourcen, um ihre Hilfe auf das Microsoft Help System Format umzustellen (gibt's schon ca 2 Jahre afaik) - daher wird vermutlich auch dieses Jahr wieder die OH mit dem unsäglichen Document Explorer ausgeliefert (ich lasse mich natürlich gerne positiv überraschen).

Übrigens gibt es das herunterfahren Problem schon spätestens mit Win7 nicht mehr (Vista weiß ich nicht).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#7

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 22. Jun 2012, 14:48
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
147 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 22. Jun 2012, 14:53
...aber die dexplore selber hängt auf jeden Fall manchmal immernoch (Win7)
Jop, kann ich bestätigen.
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 22. Jun 2012, 16:46
Wahrscheinlich hat Emba nicht genügend Ressourcen, um ihre Hilfe auf das Microsoft Help System Format umzustellen (gibt's schon ca 2 Jahre afaik)
Oder man wartet auf das nächte MS Help-Format. Nach 2 Jahren wäre es doch mal (im Zusammenhang mit Win8) hier mal wieder was neues aufzustzen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: rausfinden welche Anwendung den Shutdown von Windows verhindert

  Alt 23. Jun 2012, 21:08
Wahrscheinlich hat Emba nicht genügend Ressourcen, um ihre Hilfe auf das Microsoft Help System Format umzustellen (gibt's schon ca 2 Jahre afaik)
Oder man wartet auf das nächte MS Help-Format. Nach 2 Jahren wäre es doch mal (im Zusammenhang mit Win8) hier mal wieder was neues aufzustzen
Die machen das wahrscheinlich genauso, wie ihre eigenen Kunden und kaufen nicht jedes Jahr ne neue Version
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:22 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