Einen eigenen oder Systemprozess beenden
-
Hi,
gab es einen sehr guten Beitrag über Prozessinformationen.
Leider stehe ich nun genau bei dem gleichen Problem, wie der
letzte Poster in dem Thread.Wie beende ich einen Prozess ? Nach ExitProcess und TerminateProcess
habe ich bereits gesucht, aber ich finde keine Lösung die dann auch
funktioniertEs tut sich beim Versuch zu beenden einfach
nichts (habe testweise versucht calc.exe zu beenden...)
-
Du musst dir die enstsprechende PID suchen z.b. über EnumProcesses und danach
DWORD nPID = 1234; HANDLE hProcess = OpenProcess( PROCESS_TERMINATE, FALSE, nPID ); TerminateProcess( hProcess, 0 );
-
Hi,
PROCESS_TERMINATE war der Knackpunkt.
Danke, nun geht es
-
Ok, habe die eigenen Prozesse unter Kontrolle.
Aber die Systemprozesse sind wohl nicht zu stoppen.
-
Bestimmte System Prozesse wirst kaum beenden können. Aber "normale" Service Prozesse gehen ohne Probleme. Wo liegt genau das Problem?
-
Hi ScriptGod,
ich kann offenbar nur die Prozesse beenden,
die ich auch selbst erstellt habe.
Calc.exe notepad.exe usw. kann ich sauber beenden.
Aber incdsrv.exe z.B. will er einfach nicht beenden.
incdsrv.exe ist in den Prozessen mit "SYSTEM" ausgewiesen.
Manuell im Taskmanager ist es allerdings möglich.Bei incdsrv.exe handelt es sich um irgendeine Komponente
vom Programm InCD.Ich möchte praktisch überwachen ob sich da was in den
Prozessen einschleicht. Und wenn ja, soll es gleich
gekillt werden.
Aber wenn so ein Trojaner/Virus nicht zu stoppen ist, weil
er als "SYSTEM" läuft, ist meine arbeit daran zwecklos
-
Schau mal bei codeproject.com oder codeguru.com rein. Da gibts nen Artikel wie man sowas macht. Man kann sich vorher noch irgendwie die rechte dafür erhaschen
-
Mit Debug-Rechten, solltest du alle Prozesse beenden können. Vorraussetzung ist aber, dass du Admin auf deinem Rechner bist
-
bool GetDebugPrivilege(bool enable) { bool done=false; HANDLE processToken; if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&processToken)) { TOKEN_PRIVILEGES tp; tp.PrivilegeCount=1; LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); tp.Privileges[0].Attributes= enable ? SE_PRIVILEGE_ENABLED : 0; AdjustTokenPrivileges(processToken,FALSE,&tp,sizeof(tp),NULL,NULL); done=(GetLastError()==ERROR_SUCCESS); CloseHandle(processToken); } return done; }
TerminateProcess ist übrigens Schrott!!
@ScriptGod:
Man muss nicht unbedingt Admin sein.Der Admin kann einem "normalen" User auch das Debug Privilege geben.Standardmässig ist es aber aus guten Gründen deaktiviert.
@Threadersteller:
Wenn sich ein Virus in Winlogon eingeschlichen hat? Was wird denn dadurch besser wenn du Winlogon beendest und dein System abstürzt?
Beim nächsten Start ist wieder alles beim alten!!MfG Spacelord
-