AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

z.B. Taskkill erkennen

Ein Thema von ADelph · begonnen am 11. Dez 2018 · letzter Beitrag vom 12. Dez 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: z.B. Taskkill erkennen

  Alt 11. Dez 2018, 17:04
Zitat:
Mach dir doch einfach einen Thread, der laufend alle laufenden Prozesse auflistet und wenn z.B. Taskmgr (und ggf. noch andere Prozessmanager) dabei ist, dieses logged. Zusätzlich lässt du den Thread selbst per was ins log schreiben.
Das ist meiner Meinung nach schon unnötige Arbeit. Es gibt nicht nur den Windows TaskManager. Es gibt vermutlich Dutzende. Dann gibt es noch TASKKILL (über cmd) und und und.
Egal was man hier versucht umzusetzen, es ist Zeitverschwendung ... und auch Geldverschwendung.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#2

AW: z.B. Taskkill erkennen

  Alt 11. Dez 2018, 17:48
Zitat:
Mach dir doch einfach einen Thread, der laufend alle laufenden Prozesse auflistet und wenn z.B. Taskmgr (und ggf. noch andere Prozessmanager) dabei ist, dieses logged. Zusätzlich lässt du den Thread selbst per was ins log schreiben.
Das ist meiner Meinung nach schon unnötige Arbeit. Es gibt nicht nur den Windows TaskManager. Es gibt vermutlich Dutzende. Dann gibt es noch TASKKILL (über cmd) und und und.
Egal was man hier versucht umzusetzen, es ist Zeitverschwendung ... und auch Geldverschwendung.
Wenn es darum geht, dass ein Kunde immer das Programm per Taskmanager abschießt und anschließend behauptet er hätte nichts gemacht, dann könnte diese Methode schon helfen. In den aller meisten Fällen beschränkt sich das Wissen der "normalen" Benutzer auf den Taskmanager. Soweit ich das verstanden habe, geht es nicht darum alle Task-/Prozessmanager zu erkenne und zu umgehen.
Und wenn mir ein Kunden Datenverlust unterstellen will, ich aber in der Annahme bin, dass er es selbst verursacht, dann ist das für mich keine Zeit- oder Geldverschwendung. Eher im Gegenteil. Denn wenn ich ihm im Zweifelsfall nachweisen kann, dass er das Problem durch falsche Handhabung selbst verursacht hat, dann könnte ich ihm den Aufwand in Rechnung stellen und nicht er mir den Datenverlust. (Immer mal davon ausgegangen, dass es auch so ist, und TE es so gemeint hat und nicht andere Programmierfehler dafür verantwortlich sind).
Wenn es natürlich aus anderen Gründen "hängt" und der Benutzer gezwungen ist, das Programm abzuschießen, nützt das alles nichts. Und wenn er Taskkill verwendet sowieso nicht, weil das im Gegensatz zum Taskmanager sich sofort wieder beendet, also nur schwer zu erfassen ist. Also gehe ich in meinem Vorschlag lediglich von dem Taskmgr aus.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (11. Dez 2018 um 17:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: z.B. Taskkill erkennen

  Alt 11. Dez 2018, 19:31
Wenn es darum geht, dass ein Kunde immer das Programm per Taskmanager abschießt und anschließend behauptet er hätte nichts gemacht, dann könnte diese Methode schon helfen.
[...]
Und wenn mir ein Kunden Datenverlust unterstellen will, ich aber in der Annahme bin, dass er es selbst verursacht, dann ist das für mich keine Zeit- oder Geldverschwendung. Eher im Gegenteil.
Wäre es dann nicht besser, zu erkennen, ob ein Programm sauber beendet wurde, so wie es z.B. Windows und Firefox machen? Programm schreibt beim Starten ein Flag irgendwohin (Registry, Datei), dass das Programm NICHT sauber beendet wurde. Beim (sauberen) Beenden des Programms wird das Flag durch ein "wurde sauber beendet" ersetzt. Beim Starten des Programms kann so geprüft werden, ob es zuvor sauber beendet wurde.

Es gibt so viele Varianten, wie man Programme unsauber beenden kann, dass man sich weniger auf diese vielen verschiedenen Methoden konzentrieren sollte, und mehr darauf, ob es sauber beendet wurde.

Unabhängig davon ist die gestellte Frage durchaus interessant. Was nicht notwendigerweise bedeutet, dass die gesuchte Methode geeignet ist, das/die bestehende Problem/Aufgabe zu lösen/erfüllen .

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.976 Beiträge
 
Delphi 12 Athens
 
#4

AW: z.B. Taskkill erkennen

  Alt 11. Dez 2018, 20:10
Prinzipiell macht es eher Sinn wie z.B. Eclipse auf Multithreading und gut getrennte GUI-Logik zu setzen. Dann kann die Oberfläche kaum hängen bleiben.

Einen Taskkill kann man tatsächlich rein theoretisch verhindern indem man etwas Schindluder mit Sockethandles treibt. Dann verhindert Windows selbst nämlich das Beenden des Tasks. Aus nahe liegenden Gründen möchte ich das hier nicht weiter erörtern auch wenn das Problem seit Windows 8 größtenteils gelöst ist. Für das aktuelle Problem würde es auch nichts bringen, denn man verhindert nicht nur einen Taskkill, sondern man kann das eigene Programm dann leider auch selbst nicht mehr beenden (zumindest habe ich noch keine Möglichkeit gefunden).

Und falls man in der Vergangenheit Probleme mit Hängern hatte, die man nicht finden konnte, kann dort z.B. Eurekalog helfen. Das schreibt nicht nur bei Exceptions Bugreporte, sondern kann das auch machen, wenn das Programm eine einstellbare Zeit nicht mehr reagiert.

Die von Dalai genannten Flags zur Erkennung eines sauberen Herunterfahrens kann man z.B. mit Logs im Systemeventlog kombinieren, wenn so Probleme erkannt wurden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#5

AW: z.B. Taskkill erkennen

  Alt 12. Dez 2018, 08:14
Delphi-Quellcode:
SchreibeLog('Ich tue jetzt was.');
TueWas();
SchreibeLog('Ich tue jetzt nichts mehr.');
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#6

AW: z.B. Taskkill erkennen

  Alt 12. Dez 2018, 16:49
Wenn es darum geht, dass ein Kunde immer das Programm per Taskmanager abschießt und anschließend behauptet er hätte nichts gemacht, dann könnte diese Methode schon helfen.
[...]
Und wenn mir ein Kunden Datenverlust unterstellen will, ich aber in der Annahme bin, dass er es selbst verursacht, dann ist das für mich keine Zeit- oder Geldverschwendung. Eher im Gegenteil.
Wäre es dann nicht besser, zu erkennen, ob ein Programm sauber beendet wurde, so wie es z.B. Windows und Firefox machen? Programm schreibt beim Starten ein Flag irgendwohin (Registry, Datei), dass das Programm NICHT sauber beendet wurde. Beim (sauberen) Beenden des Programms wird das Flag durch ein "wurde sauber beendet" ersetzt. Beim Starten des Programms kann so geprüft werden, ob es zuvor sauber beendet wurde.
Natürlich kann man das auch so machen. Dann weißt du aber immer noch nicht, ob dein Programm "abgeraucht" ist, oder ob der Benutzer es mutwillig mit dem Taskmanager beendet.

Ich gehe mal ganz stark davon aus, das TE eine Möglichkeit zum Beenden eingebaut hat. Also bin ich auf Grund seiner Beiträge davon ausgegangen, dass er einem Benutzer nachweisen will, dass er dort was macht, was er nicht machen soll. Ich könnte mir vorstellen, dass ggf. irgendwo eine längere Routine im Mainthread läuft. Der Benutzer klickt nun auf der Form rum, das Programm reagiert seiner Meinung nach nicht (vielleicht meldet auch Windows "Das Programm reagiert nicht") und schon wird, je nach User, schnell der Taskmanager gezückt.
Vielleicht will der TE im ja genau dieses Verhalten nachweisen.

Was aber genau, das weiß nur der TE persönlich.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#7

AW: z.B. Taskkill erkennen

  Alt 12. Dez 2018, 19:31
Natürlich kann man das auch so machen. Dann weißt du aber immer noch nicht, ob dein Programm "abgeraucht" ist, oder ob der Benutzer es mutwillig mit dem Taskmanager beendet.
Das stimmt zwar, widerlegt aber in beiden Fällen die Behauptung des Nutzers, er hätte nichts gemacht. Auch ein instabiles System (und dadurch abstürzende Software) liegt im Einflussbereich des Nutzers - und sei es nur, den Admin dazu zu bringen, das Problem zu untersuchen und abzustellen.

Grüße
Dalai
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 08:04 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