Коллеги, возникла необходимость решить такую задачу —
получить аккаунт, под которым выполняется процесс с известным PID
на удаленной win-системе. Использую .NET, C#.
Задача в принципе решается через интерфейс WMI(Process.GetProcesses), но с
неприятными оговорками — должны быть запущены некоторые службы на удаленном
хосте.
Использование API WTS* позволяет обходиться без этого ограничения,
но есть проблема с получением имени доменного пользователя-владельца процесса.
использован вызов WTSEnumerateProcesses, получен SID — но LookupAccountSid
не идентифицирует аккаунт, сообщая об ошибке 1332.
Попытки вытащить данные из сессии через WTSQuerySessionInformation — безуспешны,
соответствующие позиции(домен, логин) возвращаемой структуры данных пусты.
Отображаются только имена локальных аккаунтов(SYSTEM, WETWORK SERVICE)
Приложение выполняется с полномочиями сисадмина, вызов tasklist /S <host>
с этими полномочиями отрабатывает успешно, отображая аккаунты процессов.
О каких нюансах я не ведаю? Есть какие-то особенности? или вообще — иные
способы получить такие данные?