Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann mein Programm den Taskmanager ignorieren (https://www.delphipraxis.net/6650-wie-kann-mein-programm-den-taskmanager-ignorieren.html)

Nicodius 17. Jul 2003 16:25


Wie kann mein Programm den Taskmanager ignorieren
 
Hallo, Frage: wie kann mein Programm den Taskamnager "ignorieren"

Weil, es ist so: ich hab ein programm geschieben was einfach die Uhrzeit zählt bis man es mit nem Passwort an /bzw. aus - schaltet. Das dient mir zu überwachung von meinem Bruder seienr Spielzeit an meinem PC.
problem er kann das Programm immer noch über den Taskmanager beenden!

Bitte helft mir
danke

[edit=Daniel B]Titel korrigiert. Mfg, Daniel B[/edit]

Lillebrohr 17. Jul 2003 16:43

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
Guten Tag,

also das hab ich beim edh gefunden. Um dein Programm vor dem Taskmanager zu verstecken musst du das machen:
Delphi-Quellcode:
interface
 
uses

  function RegisterServiceProcess
    (dwProcessID, dwType: DWord) : DWord; stdcall;


implementation

{$R *.DFM}

function RegisterServiceProcess
  (dwProcessID, dwType: DWord): DWord;
  external 'KERNEL32.DLL';'RegisterServiceProcess';

Diese Procedure vesteckt die Anwendung vor dem Taskmanager:

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterServiceProcess(0,1);
end;

Und diese zeigt sie wieder an:

procedure TForm1.Button2Click(Sender: TObject);
begin
  RegisterServiceProcess(0,0);
end;
Hoffe das reicht.

Schönen Tag noch.

Christian Seehase 17. Jul 2003 16:44

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
Moin Lillebrohr,

das gilt aber nur für 9x/ME.
Auf NT basierten Systemen gibt es diese Funktion nicht.

Lillebrohr 17. Jul 2003 16:48

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
Guten Tag Christian Seehase,

Jo hab ich noch vergessen hinzuzuschreiben.

Schande über mich. :angle2:

Schönen Tag noch

LB

Luckie 17. Jul 2003 17:43

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
Delphi-Quellcode:
procedure EnableCTRLALTDEL(YesNo : boolean);
const
  sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;

    if OpenKey (sRegPolicies+'\System\', True) then
      begin
        WriteInteger ('DisableTaskMgr', not YesNo);
        CloseKey;
      end;

    if OpenKey (sRegPolicies+'\Explorer\', True) then
      begin
        WriteInteger('NoChangeStartMenu', not YesNo);
        WriteInteger('NoClose', not YesNo);
        WriteInteger('NoLogOff', not YesNo);
        CloseKey;
      end;
  finally
    Free;
  end;
end;

Luckie 17. Jul 2003 17:56

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
So ist es besser:
Delphi-Quellcode:
uses Registry;

procedure EnableCTRLALTDEL(flag: DWORD);
const
  sRegPolicies = '\Software\Microsoft\Windows\CurrentVersion\Policies';
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;

    if OpenKey (sRegPolicies+'\System\', True) then
      begin
        WriteInteger ('DisableTaskMgr', flag);
        CloseKey;
      end;

    if OpenKey (sRegPolicies+'\Explorer\', True) then
      begin
        WriteInteger('NoChangeStartMenu', flag);
        WriteInteger('NoClose', flag);
        WriteInteger('NoLogOff', flag);
        CloseKey;
      end;
  finally
    Free;
  end;
end;

{ aktivieren }
procedure TForm1.Button2Click(Sender: TObject);
begin
  EnableCTRLALTDEL(0);
end;

{ deaktiviren}
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnableCTRLALTDEL(1);
end;

Nicodius 18. Jul 2003 07:04

Danke
 
DANKE! probiere es aus

MathiasSimmack 18. Jul 2003 07:44

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
Zitat:

Zitat von Luckie
So ist es besser:

Ist aber auch bloß eine "Notlösung", oder? Denn so "ignorieren" (:)) doch alle Programme des angemeldeten Users den TaskMan - nicht nur das eigene.

Luckie 18. Jul 2003 12:01

Re: Wie kann mein Programm den Taskmanager "ignorieren&
 
Jupp.

Gast 19. Jul 2003 20:09

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Policies werden normalerweise nur in Intervallen updated. Will heißen um sicherzustellen, daß es funzt, müßte man neu starten.

In diesem Falle funktioniert es aber. Zum Glück testet nämlich nur der TaskMan selbst auf das Flag in der Regitry und verweigert dann den Start. Regedit und diverse andere Programme machen es genauso.

moritz 22. Jul 2003 17:46

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Wie wäre es wenn du einfach ein zweites (drittes [viertes ;) ]) Programm mit unauffälligem Namen (msimm.exe;msie.exe;AVK_service.exe;...) schreibst, die sich jeweiles gegensitig überprüfen, und sofort, wenn nur eines beendet wird (Man kann keine zwei Prozesse auf einmal beenden :spin: ) den PC direkt sperrt und nen Auslachsound oder nen Sound von dir Abspielt, der deinen Bruder sagt, er solle das nicht nochmal machen?
Das halt ich für viel einfacher.... :D

Christian Seehase 22. Jul 2003 20:56

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Moin Nicodius,

im Prinzip könntest Du das mit den Policies schon machen, setzt allerdings NT/W2K/XP voraus. Dein Bruder bekommt einfach seinen eigenen Account, und der wird zu gemacht.

Nicodius 23. Jul 2003 07:54

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Hmm.... das mit den Policies müsstet ihr mir nochmal erklären.
Und Onz falls du es ernst gemeint hast :mrgreen: : könntest du mir ein ''Beispielprogramm machen " bitte ;) :mrgreen:

moritz 23. Jul 2003 18:14

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Ja, würde ich schon. Schick mir mal per PN was genau das Prog machen soll (Zeiten,...)

The-X 17. Sep 2003 16:25

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Kleine frage zu dem DisableTaskMgr:

Wie is das mit der Schnellen Benutzerumschaltung unter Xp?

Ich muss ein Prog basteln was wie einzeitschalter funzt,
also den PC nach einer Stunde sperrt. (Internet-Cafe)

{OT}
Also was passiert, (das prog lässt sich sinn-gemäß nicht beenden
nur durch Shutdown...

Wird WM_QueryEndSession auch bei der Schnellen Benutzerumschaltung gesendet ? bzw. die taskleiste gezeigt, das fenster nicht angezeigt,oder die Programm umschaltung wieder aktiviert ?
{/OT}

Würde mich freuen, wenn mir da jemand weiterhelfen könnte

Luckie 17. Sep 2003 16:32

Re: Wie kann mein Programm den Taskmanager ignorieren
 
Ui. Da mußt du mal im aktuellen PSDK kucken, was XP da sendet. Ich habe fast die Befürchtung gar nichts, weil die Session des Benutzers ja nicht endet. Alle Programm elaufen ja weiter. Also warum sollte XP da was schicken wie WM_QUERYENDSESSION? Wenn du Glück hast kommt was anderes.

MathiasSimmack 17. Sep 2003 17:16

Re: Wie kann mein Programm den Taskmanager ignorieren
 
WTS_SESSION_LOGON/LOGOFF und Co. müsste das sein. DaFox und ich haben mal ein C-Programm nach Delphi umgebaut, das quasi aufgelistet hat, wenn sich Benutzer an- und abgemeldet haben.
Hieß sinnigerweise auch "FastSwitch". :)

MathiasSimmack 17. Sep 2003 17:24

Re: Wie kann mein Programm den Taskmanager ignorieren
 
PS: WM_WTSSESSION_CHANGE ist die Nachricht. Die genannten WTS_???-Werte sind mögliche wParam-Werte. (s. PSDK).

Nicodius 17. Sep 2003 19:45

Re: Wie kann mein Programm den Taskmanager ignorieren
 
.... Onz: mein Bruder Spielt Gothik.... nach zweieinhalbstunden hab ich den Wochenbetrag gegeben(er darf 2 einhalb stunden spielen in der Woche) ---> Also möchte ich das er diese Uhr nicht abschalten kann!

.... Nur ich kann das, das heißt auch das er nur spielen kann wenn ich da bin ;-)) sein Pech


Also dann Onz bitte schick mir so ein Probeprogramm ;-))


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 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