#windows #command #prompt
#Windows #команда #приглашение
Вопрос:
У меня есть процесс, который запускается из командной строки — file.bat, хотя его родительский cmd.exe также должен быть прекращен. Единственная проблема в том, что существуют другие экземпляры cmd.exe есть ли какой-либо способ завершить процесс file.bat — без удаления других экземпляров cmd.exe
(Я не могу просто завершить cmd.exe процесс, поскольку я не знаю PID в этом случае)
Ответ №1:
Вы могли бы попробовать проанализировать выходные данные утилиты PsList из Sysinternals.
Вы можете получить это из:http://technet.microsoft.com -> поиск «sysinternals»
Когда вы запустите «PsList -t», вы увидите список процессов с дочерними процессами с отступом от левого поля. Вот фрагмент:
Первый числовой столбец — это PID. Вы не упомянули, на каком языке вы пишете свой скрипт, но не должно быть слишком сложно перебирать строки и использовать структуру, подобную стеку, для хранения текущего пути спуска. Когда вы достигнете PID нужного процесса, вы сможете изучить стек, чтобы получить информацию о родительском элементе.
Комментарии:
1. Не совсем то, что я искал, но это лучшее, что кто-либо придумал! 🙂 Спасибо
2. Просто чтобы указать на это: live.sysinternals.com это быстрая альтернативная загрузка для того же набора инструментов.
3. @0xC0000022L этот сайт, похоже, является текущим (измененное время соответствует датам в technet). Однако я бы посоветовал на всякий случай проверить цифровые подписи в исполняемых файлах.
4. @Kelvin: вы должны всегда проверять подписи независимо, так что это не относится конкретно к этому сайту. Однако, как вы можете знать, а можете и не знать, Sysinternals был куплен Microsoft несколько лет назад, и это объясняет, почему этот, казалось бы, не связанный сайт является прекрасным источником для точно таких же инструментов. Просто воспользуйтесь веб-поиском, чтобы узнать больше о покупке Microsoft Sysinternals и о том, как это live.sysinternals.com появился веб-сайт. Также смотрите данные WHOIS .