Как я знаю, под капотом класс Process
использует WMI для выполнения операций на удаленных машинах. Если интерфейса класса Process
недостаточно для вашей задачи, вы можете использовать запросов WMI напрямую.
Авторизация
По умолчанию класс Process
использует текущий windows учетные данные для авторизации на удаленных компьютерах. Если ваша удаленная машина имеет разные учетные данные для входа, вы можете переключить контекст для правильной авторизации. Это немного хитрое решение, но оно работает. Проверьте эту статью , чтобы увидеть, как это можно сделать.
В любом случае, вы можете использовать WMI-запрос, как я упоминал ранее, для выполнения авторизации и получения необходимых данных. Это более сложное, но гибкое решение.
Межсетевой экран
Конечно, межсетевой экран может блокировать удаленные соединения. WMI по умолчанию использует порт 135 для доступа к удаленной машине, поэтому вам нужно открыть его на целевой машине.
Я рекомендую вам проверить официальную документацию о подключении WMI к удаленным машинам для настройки все конфигурации правильно.
Другие подходы
Вы можете использовать клиент-серверная архитектура для выполнения таких задач мониторинга. Просто создайте одно серверное приложение, которое будет использоваться для сбора информации от клиентов. Затем создайте одно клиентское приложение, которое будет использоваться для сбора данных мониторинга и отправки их на сервер. Затем просто разверните множество клиентских приложений на целевых компьютерах и настройте их так, чтобы отправлять всю необходимую информацию на сервер. Соответственно разверните одно серверное приложение.
Эта архитектура позволяет создавать собственный протокол безопасности для обмена сообщениями между клиентами и сервером. Вы можете выбрать порт, с которым ваше приложение будет общаться. Также вы можете создавать новые / удалять старые клиенты, не затрагивая другие развернутые приложения (клиенты и сервер). Многие существующие популярные системы мониторинга (, такие как Zabbix ) используют эту архитектуру для мониторинга системы.
Это устраняет необходимость в настройке удаленного подключения к целевым машинам. Клиентские приложения могут использовать простой класс Process
, чтобы собрать все необходимые данные из операционной системы и затем отправить их на сервер, используя, например, HttpClient
. Также эта архитектура больше подходит для мониторинга, потому что есть некоторые задачи, которые вы не можете выполнить с помощью удаленного подключения.