Wykonywanie odpowiednika „Kill Process Tree” w C ++ w systemie Windows
Mamy zadanie w C ++, które rozwidli nowy proces. Ten proces z kolei może mieć wiele procesów potomnych. Jeśli zadanie zakończy się w wyznaczonym czasie, chcemy zakończyć ten rozwidlony proces.
Nie chcemy jednak pozbawiać sieroctwa procesów, które ono zrodziło. Chcemy, żeby wszyscy zginęli. Użyłem Process Explorer i ma on opcję „Kill Process Tree” podobną do „End Process Tree” Menedżera zadań systemu Windows, więc zakładam/zakładam, że istnieje do tego publiczny interfejs API. Czy ktoś to zrobił lub zna link do publicznego interfejsu API, który to robi?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
5 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
i przyjaciele. Możesz zmusić procesy potomne do pozostania w zadaniu, ustawiając odpowiedni atrybut. Następnie możesz zadzwonić do , kiedy tylko chcesz.
Wyjaśnienie: NIE to robi Menedżer zadań.
Anonimowy użytkownik
Potwierdzenie od:
Jeśli nie możesz przejść trasy obiektu zadania, możesz użyć funkcji API toolhelp, aby uzyskać identyfikator procesu nadrzędnego i zbudować w ten sposób drzewo. Należy jednak zachować ostrożność, ponieważ system Windows nie ma silnej relacji nadrzędny/podrzędny, a identyfikatory PID można odzyskać. Możesz użyć , aby zapytać o czas utworzenia procesu i sprawdzić, czy jest starszy od elementu podrzędnego. Jeśli proces pośredni w drzewie zostanie zakończony, nie będzie można zejść dalej w dół drzewa.
Anonimowy użytkownik
Potwierdzenie od:
TerminateProcess()
http://msdn.microsoft.com/en-us/library/ms686714(VS.85).aspx... To powinno załatwić sprawę za Ciebie.
Zauważyłem również, że polecenie taskkill jest przydatne do takich rzeczy.
z wiersza poleceń
:
z kodu
:
inne przełączniki (prosto z taskkill/?):
TASKKILL [/S system [/U username [/P
[password]]]]
{ [/FI filter] [/PID processid |/IM imagename] } [/F] [/T] Description:
This command line tool can be used to end one or more processes.
Processes can be killed by the process id or image name. Parameter List:
/S system Specifies the remote system to connect to./U [domain\]user Specifies the user context under which
the command should execute./P [password] Specifies the password for the given
user context. Prompts for input if omitted./F Specifies to forcefully terminate
process(es)./FI filter Displays a set of tasks that match a
given criteria specified by the filter./PID process id Specifies the PID of the process that
has to be terminated./IM image name Specifies the image name of the process
that has to be terminated. Wildcard '*'
can be used to specify all image names./T Tree kill: terminates the specified process
and any child processes which were started by it./? Displays this help/usage.
- Jan
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Se this
"Where can I find the WMI documentation?"
https://coderoad.ru/483501/
and
the WMI COM library
http://www.vsj.co.uk/articles/display.asp?id=439
and
Przykładowe aplikacje WMI C ++
http://msdn.microsoft.com/en-us/library/aa394558(VS.85).aspx