У меня есть система Windows, которая выявляет некоторые странные действия с регулярным интервалом таймера и подозреваю, что это происходит из-за запущенного процесса.
Есть ли инструмент для отображения всех таймеров процессов? Будь то интерфейс командной строки или графический интерфейс, простого перечисления будет достаточно, чтобы найти источник. Ожидаемая информация для каждого таймера: идентификатор процесса, временная метка разнесения, интервал повтора (если повторяется).
(Конечно, я начал с ProcessExplorer из Sysinternals, но, похоже, в его понятии вообще нет типа дескриптора таймера.)
Наиболее близкой к этому будет команда! Timer в WinDBG. Вам нужно будет подключить к машине живой отладчик (или использовать livekd из sysinternals) или получить полный дамп памяти и открыть его в WinDBG.
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-timer
Бег wmic process where name="process.exe" get /format:list
отобразит все детали процесса из process.exe
. Вы можете указать название свойства после get
для фильтрации. Насколько я знаю, инструмента для извлечения ручек таймера извне нет. Возможно, Process Monitor Sysinternals может отображать дополнительную информацию об активности процесса.
Ты можешь использовать perfmon
для регистрации выполненного процесса на вашем сервере. Вы можете добавить новый коллектор и выбрать все счетчики для вашего процесса. Когда ваш процесс со странной активностью запускается, он будет зарегистрирован, и вы сможете увидеть время, когда он начинается и заканчивается, и который является его родительским процессом. Более того, вы сможете увидеть всю информацию об этом процессе.
Будьте осторожны, чтобы выбрать в ваших счетчиках опцию сохранения процесса, который будет создан после вашего перфмона.