Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Prozess verstecken (https://www.delphipraxis.net/59517-prozess-verstecken.html)

mr-unbekannt 23. Dez 2005 13:55


Prozess verstecken
 
hello

gibt es irgend einen befehl, um das programm im taskmanager unsichtbar zu machen, oder wenigstens nicht bei den Tasks anzeigen?

vielen dank

Luckie 23. Dez 2005 13:58

Re: Prozess verstecken
 
Warum sollte man das wollen?

ichbins 23. Dez 2005 14:01

Re: Prozess verstecken
 
für ein im Hintergrund laufendes Programm zum Beispiel (Protokollierungsprogramm)

zum Thema:
Delphi-Quellcode:
application.mainform.visible:=False;
wenn du keine weiteren Forms offen hast, ist das Programm versteckt.

Stanlay Hanks 23. Dez 2005 14:02

Re: Prozess verstecken
 
Wenn du nicht willst, dass dein Programm beendet wird, dann nimm einen Service, aber Programme, die sich (In der Prozessliste) vor mir verstecken wollen, würden mir nicht auf den Rechner kommen ;) Das würde dem Anwender nämlich jegliche Kontrolle über das Programm entziehen. :roll:

Man liest sich, Stanlay :hi:

SarDGer 23. Dez 2005 14:15

Re: Prozess verstecken
 
Versuch mal das:

Delphi-Quellcode:
function RegisterServiceProcess
  (dwProcessID, dwType: DWord) : DWord; stdcall;


implementation

{$R *.DFM}

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


//Diese Procedure versteckt 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 hilft dir weiter.
Und mach keinen Blödsinn damit! :angel:

Frohes Fest und eine guten Rutsch, ich mach jetzt Feierabend :zwinker:

Cya,
Sar

Neotracer64 23. Dez 2005 14:44

Re: Prozess verstecken
 
Für XP:

http://www.delphipraxis.net/internal...ess+verstecken

Jens Schumann 23. Dez 2005 14:45

Re: Prozess verstecken
 
Hallo,
so weit ich weiss funktioniert RegisterServiceProcess nur unter Win95.
Bzw. ab NT4.0 erscheint das Programm trotzdem im Taskmanager

Jelly 23. Dez 2005 15:49

Re: Prozess verstecken
 
Zitat:

Zitat von Jens Schumann
ab NT4.0 erscheint das Programm trotzdem im Taskmanager

Und das ist auch GUT so. Alles andere fällt unter die Kategorie SPYWARE.

Neotracer64 23. Dez 2005 15:56

Re: Prozess verstecken
 
Und trotzdem gibt es einen Eintrag in der Codelibrary dazu ? (Siehe oben)

Luckie 23. Dez 2005 18:26

Re: Prozess verstecken
 
Zitat:

Zitat von Jens Schumann
Hallo,
so weit ich weiss funktioniert RegisterServiceProcess nur unter Win95.
Bzw. ab NT4.0 erscheint das Programm trotzdem im Taskmanager

Unter NT ff. verabschiedet sich das Programm mit einer Fehlermeldung, da ide Funktion statisch importiert wurde und es sie unter NT ff. nicht gibt.

CodeX 24. Jul 2008 22:04

Re: Prozess verstecken
 
Ich erstelle mal keinen neuen Thread dazu, sondern packe meine Frage mal hinterher, weils ja irgendwie hier dazu gehört...

Ich würde gerne den Prozess eines Services aus dem Task-Manager entfernen. Irgendwie finde ich es eh seltsam, dass der dort auftaucht, sobald man ihn über den Dienste-Dialog gestartet hat. Gibt es für einen Service eine bestimmte Einstellung dafür oder muss ich da genau so tricksen wie z.B. mit dem oben angesprochenen Code aus der Library?

Cyf 24. Jul 2008 22:45

Re: Prozess verstecken
 
Ich wüsste nicht wozu sowas nötig ist, außer um Unsinn damit anzustellen, wenn dein Programm Arbeiten im Hintergrund für alle Benutzermachen soll und nicht jeder Benutzer Zugriff auf ihn haben soll, erstelle einen System-Dienst (wie z.B. der Apache das tut), ansonsten kann er eigentlich auch im Benutzerkontext laufen. Es sollte zu keinem Zweck nötig sein, einen Prozess völlig zu verbergen, also auch vor Administratoren.

CodeX 24. Jul 2008 23:10

Re: Prozess verstecken
 
Hallo? Beitrag gelesen oder einfach nur auf ein Stichwort hin geantwortet?

Es geht um einen System-Dienst. Dieser ist ganz nochrmal bei den Diensten gelistet, wo er gerne bleiben kann und soll. Jedoch wird er leider auch im Task-Manager angezeigt, wo er meiner Meinung nach nichts zu suchen hat. Dort kann man ihn ja nicht mal beenden. Und da viele andere Dienste da nicht auftauchen, frage ich mich eben, wie man einen Dienst aus der Prozessliste raushält.

Luckie 24. Jul 2008 23:15

Re: Prozess verstecken
 
Warum hat er da nichts zu suchen? Und mit entsprechenden Tool siehst du auch alle anderen Dienste. Für mich ist dass immer nochkein hinreichender Grund warum du den Dienst verstecken willst. Ich würde mich eher fragen, warum dein Dienst kein Kindprozess vom Servicemanager svchost ist.

CodeX 24. Jul 2008 23:27

Re: Prozess verstecken
 
Zitat:

Zitat von Luckie
Warum hat er da nichts zu suchen?

Es laufen doch bestimmt an die 40 andere Dienste, und keiner von denen taucht in der Prozess-Liste des Taskmanagers auf. Ist das jetzt zu weit hergeholt, wenn ich das für meinen Dienst auch so haben möchte?

Zitat:

Zitat von Luckie
Und mit entsprechenden Tool siehst du auch alle anderen Dienste.

Damit habe ich kein Problem.

Zitat:

Zitat von Luckie
Ich würde mich eher fragen, warum dein Dienst kein Kindprozess vom Servicemanager svchost ist.

Gute Frage. Ich habe lediglich diverse Anleitungen zum Erstellen von Diensten befolgt.
Und dann eben:
1. C:\myserv.exe /install
2. services.msc
3. Rechtsklick, starten

Ich sag ja, es kann durchaus sein, dass im Code des Dienstes irgendeine Einstellung nicht (richtig) gesetzt ist, aber ich habe keinerlei Ansatzpunkt, was ich da machen könnte. Deshalb frage ich ja nach...

Cyf 25. Jul 2008 00:32

Re: Prozess verstecken
 
Es war nicht Sinn der Sache dich anzugreifen oder etwas zu unterstellen, ich erkenne nur absolut keinen Sinn darin einen Sinn verbergen zu wollen, die Frage ist eher, ob es ein gutes Konzept ist, wenn es möglich ist das andere Dienste/Prozesse (ausgenommen die auf die kein Zugriff für den Benutzer besteht bzw. Adminrechte benötigt werden), vom normalen Taskmanager nicht angezeigt werden, welcher zur Überwachung der laufenden Prozesse gut ist (sein sollte). Ich finde einfach auch keinen sinnvollen (legalen) Grund dafür sowas zu verbergen.

emsländer 25. Jul 2008 00:41

Re: Prozess verstecken
 
Moin,

Du kannst den ServiceType auf stDevice stellen. Dann ist er wie ein Treiber und taucht weder im DienstManager, noch im TaskManager auf. Evtl. zusätzlich den StartType auf stSystem.

Gnade Dir sonstwer, wenn Du damit Blödsinn anstellst!


Gruss

EL

CodeX 25. Jul 2008 14:51

Re: Prozess verstecken
 
Keine Sorge, ich hab nichts Böses vor.

Und quasi daraus resultierend, hilft mir die Einstellung auf stDevice leider wenig. Der Service ist dann zwar aus der Prozessliste des Taskmanagers verschwunden, leider aber auch aus der Dienste-Liste (services.msc). Da soll er ja ganz normal drin bleiben und steuerbar sein.

Verstehe nicht, dass das wohl wirklich umständlicher als nötig ist... Wie machen das denn die ganzen anderen Dienste, die alle nicht im Taskmanager auftauchen, aber ganz normal über die Dienste-Liste angezeigt und gesteuert werden können?

Apollonius 25. Jul 2008 15:06

Re: Prozess verstecken
 
Hast du dir mal den Pfad der Exe anzeigen lassen? Bei mir ist das svchost.exe -k netsvcs. Das bedeutet, dass es sich um einen DLL-Service handelt. Dokumentation zu DLL-Services habe ich in der MSDN Library nicht gefunden. Anscheinend muss die DLL eine Funktion "ServiceMain" exportieren, die dann automatisch von svchost.exe aufgerufen wird. Weitere Einstellungen sind in der Registry unter HKLM\System\CurrentControlSet\Services\Servicename .

OregonGhost 25. Jul 2008 15:06

Re: Prozess verstecken
 
Zitat:

Zitat von CodeX
Verstehe nicht, dass das wohl wirklich umständlicher als nötig ist... Wie machen das denn die ganzen anderen Dienste, die alle nicht im Taskmanager auftauchen, aber ganz normal über die Dienste-Liste angezeigt und gesteuert werden können?

Redest du von Windows-Diensten? Die tauchen alle ganz brav im Taskmanager auf. Viele davon sind Bestandteil von svchost.exe. Gib mal auf einer Kommandozeile

tasklist /svc

ein, dann bekommst du eine Liste aller laufenden Programme und eine Liste aller Dienste, die im jeweiligen Programm enthalten sind oder gerade laufen.

CodeX 25. Jul 2008 16:24

Re: Prozess verstecken
 
Jetzt ist das Stichwort svchost.exe und den Dienst dran anhängen schon mehrfach gefallen.
Vielleicht geht das ja in die richtige Richtung.

Kann ich das mit meinem Service, der als exe komiliert wurde (um per "...\myserv.exe /install" installiert werden zu können), nun irgendwie so machen?

Oder brauche ich dann einen ganz anderen Ansatz, und dann so wie Apollonius schreibt, mit dem Service als DLL und dann irgendwelchen undokumentierten Funktionen...?


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