Как определить завершенный процесс Windows, если у меня все еще есть свой PID?

Предыстория: В середине моей работы неожиданно появилось лицензионное соглашение на установку "Microsoft Mouse and Keyboard Center". Я хотел бы понять, какой процесс запустил установку, но, используя Process Explorer, я увидел, что он исчез, и мне удалось найти только его PID (см. Скриншот).

Вопрос:

Если вы используете Process Explorer, вы, возможно, знаете ситуацию, когда родительский процесс процесса больше не существует, и вы можете видеть только его PID:

Существуют ли какие-либо журналы Windows, содержащие связь PID с запущенным процессом, чтобы я мог узнать, какой процесс выполнялся под данным PID?

Предпочтительно меня интересуют сценарии, где я не ожидал этого, поэтому я не использовал Process Monitor для захвата событий в системе.

3 ответа

Решение

Существуют ли какие-либо журналы Windows, содержащие связь PID с запущенным процессом

По умолчанию таких логов нет. Однако вы можете включить отслеживание процессов в журнале событий безопасности Windows.

Заметки:


Как использовать события отслеживания процессов в журнале безопасности Windows

В Windows 2003/XP вы получаете эти события, просто включив политику аудита отслеживания процессов.

В Windows 7/2008+ необходимо включить создание процесса аудита и, при необходимости, подкатегории завершения процесса аудита, которые вы найдете в разделе "Расширенная настройка политики аудита" в объектах групповой политики.

Эти события невероятно ценны, потому что они дают исчерпывающий контрольный журнал каждый раз, когда любой исполняемый файл в системе запускается как процесс. Вы даже можете определить, как долго выполняется процесс, связав событие создания процесса с событием завершения процесса, используя идентификатор процесса, найденный в обоих событиях. Примеры обоих событий приведены ниже.

Источник Как использовать события отслеживания процессов в журнале безопасности Windows


Как включить создание процесса аудита

  1. Запустите gpedit.msc

  2. Выберите "Настройки Windows" > "Настройки безопасности"> "Локальные политики"> "Политика аудита"

  3. Щелкните правой кнопкой мыши "Аудит отслеживания процессов" и выберите "Свойства"

  4. Проверьте "Успех" и нажмите "ОК"


Что такое отслеживание процессов аудита

Этот параметр безопасности определяет, будет ли ОС проверять связанные с процессом события, такие как создание процесса, завершение процесса, обработка дублирования и косвенный доступ к объектам.

Если этот параметр политики определен, администратор может указать, следует ли проверять только успехи, только неудачи, как успехи, так и неудачи, или вообще не проверять эти события (т.е. ни успехи, ни неудачи).

Если включен Аудит успеха, запись аудита создается каждый раз, когда ОС выполняет одно из этих действий, связанных с процессом.

Если аудит отказа включен, запись аудита создается каждый раз, когда ОС не может выполнить одно из этих действий.

По умолчанию: без аудита

Важное замечание: Для большего контроля над политиками аудита используйте параметры в узле Конфигурация расширенной политики аудита. Для получения дополнительной информации о конфигурации расширенной политики аудита см. 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). Его нужно запустить до появления популярного, но даже после того, как родительский процесс будет мертв, он соберет всю информацию, которую вы искали.

Другие вопросы по тегам