Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Alle Prozesse bis auf einen einfrieren (https://www.delphipraxis.net/144429-alle-prozesse-bis-auf-einen-einfrieren.html)

Delphi-Narr 7. Dez 2009 19:46


Alle Prozesse bis auf einen einfrieren
 
Hallo, ich möchte ein Programm haben, dass alle Prozesse einfriert, die nicht zum laufen des eigenen Programms nötig sind. Alternativ soll es den Computer sperren, also das Programm kann nur beendet oder ähnliches werden, wenn der Nutzer ein Passwort eingibt.
Ist das irgendwie möglich?
Liebe Grüße!

Neutral General 7. Dez 2009 19:50

Re: Alle Prozesse bis auf einen einfrieren
 
Hi,

Was mir dazu eingefallen ist, wäre evtl. MSDN-Library durchsuchenSuspendThread/MSDN-Library durchsuchenResumeThread. Vorher müsstest du dir natürlich noch alle Thread-Handles holen die du bekommen kannst. Gibts auch irgendwie Funktionen für.

Gruß
Neutral General

himitsu 7. Dez 2009 20:01

Re: Alle Prozesse bis auf einen einfrieren
 
Und wie willst du feststellen, daß ein Prozess nicht nötig ist und angehalten werden kann?

PS: viele Prozesse sind eh zum Großteil schon in einem Pausemodus.


Am Ende hältst du z.B. einen Systemprozess an, welchen dein Programm braucht und dann wartet dein Programm auf diesen Prozess, welcher natürlich nicht antwortet und dir friert der gesamte PC ein.

Delphi-Narr 7. Dez 2009 20:03

Re: Alle Prozesse bis auf einen einfrieren
 
Ich möchte halt nur ein Programm, dass den Computer sperrt. Sodass es sich überall drüber schaltet und nicht beendet werden kann.

Neutral General 7. Dez 2009 20:03

Re: Alle Prozesse bis auf einen einfrieren
 
Zitat:

Zitat von himitsu
Am Ende hältst du z.B. einen Systemprozess an, welchen dein Programm braucht und dann wartet dein Programm auf diesen Prozess, welcher natürlich nicht antwortet und dir friert der gesamte PC ein.

No Risk, No Fun :stupid:

wicht 7. Dez 2009 20:28

Re: Alle Prozesse bis auf einen einfrieren
 
Ein sehr sehr komischer Ansatz. Darf man fragen, in welchem Kontext sowas sinnvoll ist?

Ralf Kaiser 7. Dez 2009 20:33

Re: Alle Prozesse bis auf einen einfrieren
 
Zitat:

Zitat von wicht
Ein sehr sehr komischer Ansatz. Darf man fragen, in welchem Kontext sowas sinnvoll ist?

Das einzige, was ich mir vorstellen könnte wäre ein Computer der an irgendeinem öffebtlichen Ort steht und bei dem eine Applikation (z.B. ein Informationssystem) läuft und nicht beendet werden soll. (Stickwort "Kioskmodus")

Aber gabs da nicht irgendeine "offizielle" Möglichkeit die nicht so nach "Hack" aussieht?

Delphi-Narr 7. Dez 2009 20:46

Re: Alle Prozesse bis auf einen einfrieren
 
soll so eine Art DesktopLock sein...

Luckie 7. Dez 2009 21:54

Re: Alle Prozesse bis auf einen einfrieren
 
Zitat:

Zitat von Alfi001
Aber gabs da nicht irgendeine "offizielle" Möglichkeit die nicht so nach "Hack" aussieht?

Ja gibt es. Sogar offiziell von MS und kostenlos.

Zitat:

Zitat von Delphi-Narr
soll so eine Art DesktopLock sein...

Dann ruf MSDN-Library durchsuchenLockWorkStation auf und fertig.

Astat 7. Dez 2009 23:14

Re: Alle Prozesse bis auf einen einfrieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-Narr, da ich in meinem Bekanntenkreis immer wieder mit hartnäckigen
Schädlingen konfrontiert bin, habe ich mir mal ein eigenes Kill util geschrieben.
Da verwende ich die Technik, bei allen nicht zum System gehörenden Prozessen, deren Threads
zu suspendieren. Geht auch bei den meisten Systemprozessen. Wenn dann alles konserviert ist,
beginnt die Ausmisterei.

Also interessieren dürfte dich die Funktion:

Delphi-Quellcode:
function TProcList.SecureKill: boolean;

...

          //-- Bei Winlogon.exe threads suspendieren
          if (filename = 'winlogon.exe') then begin
            dwArray := GetThreadID(filename);
            for x := 0 to Length(dwArray) - 1 do begin
              hThread  := OpenThread(
                THREAD_GET_CONTEXT or THREAD_SET_CONTEXT or THREAD_SUSPEND_RESUME, false,
                  dwArray[x]
                  );
              if hThread <> 0 then SuspendThread(hThread);
            end;
          end;
Source der Classe ist beigefügt.

lg. Astat


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