Я пытаюсь выяснить способ через командную строку Windows, чтобы определить, если процесс не имеет родителя.
Я знаю, что все процессы технически имеют родителя, который контролируется ОС или чем-то еще, но ради простоты у него "нет родителя". Например, если вы откроете окно проводника, оно появится в Process Explorer в верхней части дерева процессов.
Однако, когда я делаю wmic-запрос к процессу, я получаю PID для "parentProcessPID". Когда я пытаюсь найти этот PID с помощью списка задач, он говорит, что PID не распознан. Я посмотрел на пару процессов, подобных этому, и у них, кажется, есть разные родительские процессы, которые все недоступны через список задач. Если у процесса есть родительский процесс, который недоступен через список задач, означает ли это, что он находится на "вершине" своего дерева процессов?
Я спрашиваю, потому что я пытаюсь провести различие между программой, выполняемой сама по себе, и той же программой, запущенной как дочерний процесс другой программы.
Например:
Допустим, я захожу в меню Пуск Windows и открываю окно проводника. Затем я открываю окно cmd и набираю: explorer.exe
. Теперь у меня есть два процесса explorer.exe. Один - это дочерний процесс cmd.exe, а другой - автономный процесс. Я хочу иметь возможность с помощью запроса wmic или списка задач выделить все процессы explorer.exe
которые являются автономными. Итак, должен быть возвращен процесс, который я запустил через меню «Пуск» Windows, а не процесс, запущенный cmd.exe.
Я сталкиваюсь с проблемой, что у каждого процесса есть идентификатор родительского процесса, и я не знаю, как отличить родительский процесс, происходящий от программы, или родительский процесс, происходящий от процесса, связанного с ОС. Если бы я мог сделать следующее, это было бы здорово:
псевдокод:
wmic process where name=explorer.exe get parentProcessID,processID
tasklist /fi "PID eq <parentProcessID>" 2>&1> log.txt
if(log.txt contains "INFO: No tasks are running which match the specified criteria."){
// Parent PID is not recognized by tasklist
// Do something
}
Но я не уверен, что моя логика верна.