Как определить завершенный процесс Windows, если у меня все еще есть свой PID?
Предыстория: В середине моей работы неожиданно появилось лицензионное соглашение на установку "Microsoft Mouse and Keyboard Center". Я хотел бы понять, какой процесс запустил установку, но, используя Process Explorer, я увидел, что он исчез, и мне удалось найти только его PID (см. Скриншот).
Вопрос:
Если вы используете Process Explorer, вы, возможно, знаете ситуацию, когда родительский процесс процесса больше не существует, и вы можете видеть только его PID:
Существуют ли какие-либо журналы Windows, содержащие связь PID с запущенным процессом, чтобы я мог узнать, какой процесс выполнялся под данным PID?
Предпочтительно меня интересуют сценарии, где я не ожидал этого, поэтому я не использовал Process Monitor для захвата событий в системе.
3 ответа
Существуют ли какие-либо журналы Windows, содержащие связь PID с запущенным процессом
По умолчанию таких логов нет. Однако вы можете включить отслеживание процессов в журнале событий безопасности Windows.
Заметки:
Решение требует внесения изменений в групповую политику с помощью
gpedit
,К сожалению, редактор групповой политики (gpedit) не включен в версии Windows для начинающих, Home и Home Premium.
См. Мои вопросы и ответы Windows Starter Edition, Home и Home Premium не включают gpedit, как мне его установить? инструкции о том, как его установить.
Как использовать события отслеживания процессов в журнале безопасности Windows
В Windows 2003/XP вы получаете эти события, просто включив политику аудита отслеживания процессов.
В Windows 7/2008+ необходимо включить создание процесса аудита и, при необходимости, подкатегории завершения процесса аудита, которые вы найдете в разделе "Расширенная настройка политики аудита" в объектах групповой политики.
Эти события невероятно ценны, потому что они дают исчерпывающий контрольный журнал каждый раз, когда любой исполняемый файл в системе запускается как процесс. Вы даже можете определить, как долго выполняется процесс, связав событие создания процесса с событием завершения процесса, используя идентификатор процесса, найденный в обоих событиях. Примеры обоих событий приведены ниже.
Источник Как использовать события отслеживания процессов в журнале безопасности Windows
Как включить создание процесса аудита
Запустите gpedit.msc
Выберите "Настройки Windows" > "Настройки безопасности"> "Локальные политики"> "Политика аудита"
Щелкните правой кнопкой мыши "Аудит отслеживания процессов" и выберите "Свойства"
Проверьте "Успех" и нажмите "ОК"
Что такое отслеживание процессов аудита
Этот параметр безопасности определяет, будет ли ОС проверять связанные с процессом события, такие как создание процесса, завершение процесса, обработка дублирования и косвенный доступ к объектам.
Если этот параметр политики определен, администратор может указать, следует ли проверять только успехи, только неудачи, как успехи, так и неудачи, или вообще не проверять эти события (т.е. ни успехи, ни неудачи).
Если включен Аудит успеха, запись аудита создается каждый раз, когда ОС выполняет одно из этих действий, связанных с процессом.
Если аудит отказа включен, запись аудита создается каждый раз, когда ОС не может выполнить одно из этих действий.
По умолчанию: без аудита
Важное замечание: Для большего контроля над политиками аудита используйте параметры в узле Конфигурация расширенной политики аудита. Для получения дополнительной информации о конфигурации расширенной политики аудита см. http://go.microsoft.com/fwlink/?LinkId=140969.
Единственный способ убедиться, что у вас должен быть включен аудит, чтобы отслеживать создание процессов.
Из программы "Локальная политика безопасности" (введите secpol.msc
с экрана запуска, если у вас возникли проблемы с его поиском) перейдите в "Параметры безопасности -> Локальные политики -> Политика аудита", затем включите "Отслеживание процесса аудита" для "Успех".
После этого перейдите к средству просмотра событий и проверьте журнал событий "Secruity", там вы увидите записи "Audit Success" для каждого запуска или завершения процесса.
Процесс завершен. Предмет: Идентификатор безопасности: SYSTEM Имя учетной записи: SCOTT-PC$ Домен аккаунта: WORKGROUP Идентификатор входа: 0x3E7 Обрабатывать информацию: Идентификатор процесса: 0x1338 Имя процесса: C:\Windows\System32\ согласия.exe Статус выхода: 0x0
Вам нужно будет преобразовать искомый идентификатор процесса из десятичного числа в шестнадцатеричное (3336 становится 0xD08). Самый простой способ конвертировать - это открыть калькулятор Windows, перейти в режим "Программист", ввести число в режиме "dec", затем нажать в режиме "hex". Отображаемое число будет преобразовано в гекс для вас.
Если это одноразовая вещь и вы не хотите постоянно регистрировать свои процессы, я бы предложил использовать Microsoft Process Monitor ( https://technet.microsoft.com/en-us/Library/bb896645.aspx). Его нужно запустить до появления популярного, но даже после того, как родительский процесс будет мертв, он соберет всю информацию, которую вы искали.