// Engineering Log

Sysinternals: утилиты Microsoft для диагностики Windows Server

Опубликовано 22.09.2026

Sysinternals — набор бесплатных утилит Microsoft для диагностики Windows. Сайт Sysinternals создал в 1996 году Марк Руссинович вместе с Брайсом Когсвеллом, в 2006 году компанию купила Microsoft, и с тех пор утилиты публикуются на learn.microsoft.com. Они показывают то, чего не видно в стандартных средствах: какой процесс держит файл, что именно программа читает из реестра, что запускается при старте системы и какие процессы открывают сетевые соединения.

Набор регулярно обновляется: например, в 2026 году вышли Process Monitor 4.1, Autoruns 14.3 и новая версия Sysmon. Ниже — утилиты, которые пригодятся администратору Windows Server чаще всего, и приёмы работы с ними.

Как получить утилиты

  • Архив Sysinternals Suite с официального сайта: https://download.sysinternals.com/files/SysinternalsSuite.zip. Распакуйте его в отдельный каталог, например C:\Tools\Sysinternals, и добавьте каталог в переменную PATH.
  • Sysinternals Live — запуск без скачивания. В проводнике или командной строке укажите путь вида \\live.sysinternals.com\tools\<имя_утилиты>:
cmd
\\live.sysinternals.com\tools\procexp64.exe

Путь вида \\live.sysinternals.com\tools открывается как сетевой ресурс, поэтому в корпоративных сетях, где такой исходящий трафик закрыт, Sysinternals Live может быть недоступен. На серверы без выхода в интернет утилиты лучше класть заранее, вместе с остальными инструментами администратора.

При первом запуске каждая утилита показывает лицензионное соглашение. В скриптах его подтверждают ключом -accepteula.

Основные утилиты

УтилитаДля чего нужна
Process ExplorerРасширенный диспетчер задач: дерево процессов, загруженные DLL, открытые дескрипторы, проверка цифровых подписей
Process MonitorЗапись обращений к файлам, реестру, сети и процессам в реальном времени
AutorunsВсе места автозапуска: службы, драйверы, задачи планировщика, ключи реестра, расширения
HandleКонсольный поиск процесса, который держит файл или каталог
TCPViewСетевые соединения с привязкой к процессам
PsToolsНабор консольных утилит для локального и удалённого управления: PsExec, PsList, PsKill, PsInfo, PsService
SysmonСлужба, которая записывает в журнал событий создание процессов, сетевые соединения, изменения реестра и другие действия

Типовые задачи

Файл занят другим процессом. Когда не удаётся удалить или заменить файл, Handle покажет, кто его держит:

cmd
handle.exe -accepteula C:\inetpub\logs\LogFiles\W3SVC1\u_ex260922.log

В Process Explorer то же самое делается через Find → Find Handle or DLL.

Программа не запускается или ведёт себя странно. Process Monitor записывает каждую операцию с файлами и реестром. Сразу задайте фильтр по имени процесса (Filter → Process Name is …): без фильтра за минуту набираются сотни тысяч событий, и утилита заметно нагружает систему. Результаты с кодами ACCESS DENIED и NAME NOT FOUND чаще всего и указывают на причину — нет прав на каталог или не найден ключ реестра.

Сервер долго загружается или в автозапуске что-то лишнее. Autoruns показывает все точки автозапуска на одном экране. Включите Options → Hide Microsoft Entries, чтобы остались только сторонние компоненты, и проверьте записи без подписи или с неизвестным издателем. Отключайте элементы снятием галочки, а не удалением: так изменение легко откатить.

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

Кто устанавливает сетевые соединения. TCPView показывает соединения с именами процессов и позволяет закрыть соединение или завершить процесс прямо из окна.

Удалённое выполнение команд: PsExec

PsExec запускает процессы на удалённых компьютерах без предварительной установки клиента. Синтаксис позволяет указать несколько компьютеров через запятую или список из файла:

cmd
psexec \\server01,server02 -accepteula cmd /c "net stop wuauserv && net start wuauserv"
psexec @servers.txt -accepteula ipconfig /all

Что нужно учитывать:

  • Права. Для работы на удалённой машине нужна учётная запись с правами администратора на ней. PsExec доставляет на удалённый компьютер служебный компонент и запускает его как службу, поэтому ему нужен доступ к административному общему ресурсу ADMIN$ по SMB — на целевой машине должны быть открыты порты SMB и включена служба «Сервер».
  • Контекст. Без ключа -u процесс работает от вашей учётной записи, но без доступа к сетевым ресурсам. Если команде нужны сетевые ресурсы, укажите пользователя в формате Домен\Пользователь. Ключ -s запускает процесс от имени System.
  • Безопасность. Пароль и команда передаются в зашифрованном виде. При этом антивирусы нередко реагируют на PsTools: сами утилиты вредоносного кода не содержат, но ими пользуются и злоумышленники. Поэтому запуск PsExec в сети стоит согласовать со службой безопасности, а в журналах его появление должно быть ожидаемым.

Для регулярного управления парком серверов PsExec удобен как разовый инструмент. Для постоянной автоматизации больше подходят PowerShell Remoting или системы управления конфигурацией.

Sysmon: журнал для расследования инцидентов

Sysmon устанавливается как служба и драйвер и сохраняется после перезагрузки. Он записывает в журнал событий создание процессов с полной командной строкой и хешем исполняемого файла, загрузку драйверов, сетевые соединения, DNS-запросы, изменения реестра и многое другое. Сам Sysmon события не анализирует: их собирают в SIEM или централизованное хранилище журналов.

Установка с конфигурационным файлом и обновление конфигурации:

cmd
sysmon64 -accepteula -i C:\Tools\sysmon-config.xml
sysmon64 -c C:\Tools\sysmon-config.xml

События записываются в журнал Applications and Services Logs/Microsoft/Windows/Sysmon/Operational. Без фильтров Sysmon создаёт очень много событий, поэтому конфигурацию берут за основу из проверенных шаблонов, например SwiftOnSecurity/sysmon-config, и дорабатывают под свои серверы. Текущая версия поддерживает Windows Server 2019 и новее; есть и отдельная версия Sysmon для Linux.

Связка с PowerShell

Консольные утилиты удобно вызывать из скриптов. Например, проверить, не заблокирован ли файл перед обновлением приложения:

powershell
$result = & C:\Tools\Sysinternals\handle.exe -accepteula -nobanner "C:\App\app.dll"
if ($result -match 'pid:') {
    Write-Warning "Файл занят: $result"
}

Флаг -nobanner убирает строку с копирайтом из вывода, и его проще разбирать.

Типичные ошибки

  • Process Monitor без фильтра на загруженном сервере: быстро заполняет память и замедляет систему. Фильтр задают до начала записи.
  • Sysmon без конфигурации или с конфигурацией «записывать всё»: журнал переполняется, полезные события теряются.
  • Удаление записей в Autoruns вместо отключения: откатить такое изменение сложнее.
  • PsExec с паролем в открытом виде в скриптах: пароль остаётся в истории команд и файлах. Используйте учётную запись с нужными правами без передачи пароля в командной строке.
  • Старые копии утилит на серверах: Microsoft регулярно выпускает исправления, поэтому набор стоит обновлять вместе с остальным инструментарием.

Итог

Sysinternals закрывает большую часть задач диагностики Windows Server без установки дополнительных агентов: найти процесс, который держит файл, понять, почему не запускается программа, проверить автозапуск и собрать журнал для расследования. Для постоянного наблюдения за серверами их дополняют мониторингом и централизованным сбором журналов.

Ресурсы

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ