Я намагаюся розібратися в командному рядку Windows, щоб визначити, чи немає в процесі батьківського процесу.
Я знаю, що в усіх процесах технічно є батько, яким керує ОС або що завгодно, але заради простоти він "не має батьків". Наприклад, якщо ви відкриєте вікно провідника, воно з’явиться в Провіднику процесів у верхній частині дерева процесів.
Однак, коли я роблю wmic-запит під час процесу, я отримую PID для 'parentProcessPID'. Коли я намагаюся знайти цей PID за допомогою списку завдань, він говорить, що PID не розпізнається. Я переглянув декілька процесів на кшталт цього, і у них, здається, є різні батьківські процеси, які всі доступні через список завдань. Якщо процес має батьківський процес, недоступний через список завдань, чи означає це, що він знаходиться у верхній частині дерева його процесів?
Я запитую, тому що я намагаюся розмежувати програму, що працює сама по собі, і ту ж програму, що працює як дочірній процес іншої програми.
Наприклад:
Скажімо, я заходжу в меню запуску Windows і відкриваю вікно провідника. Потім я відкриваю CMD вікно і введіть: explorer.exe
. Зараз у мене є два процесиr.r.ee. Один - це дочірній процес 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
}
Але я не впевнений, чи моя логіка правильна.