У меня есть приложение C #, которое подключается через WMI ко многим удаленным системам, как в домене, так и автономно. Программа предоставляет wmi учетные данные и использует олицетворение. При запуске вручную (с консоли) подключается нормально и все хорошо. Однако, когда тот же самый .exe вызывается из службы (запущенной как локальный пользователь), он всегда получает 0x80070005 (E_ACCESSDENIED) при вызове Connect () в ManagementScope.
Я довольно много поискал и нашел много, казалось бы, полезных статей на похожие темы, но ни одна из них не работает. Этот и его [последующий пост] [2] на сайте MS очень похожи, за исключением того, что мой сбой происходит при подключении, а не при попытке выполнить запрос, так что это похоже на проблему с разрешениями локальной системы.
Я испортил разрешения DCOM, разрешения удаленного взаимодействия WMI, параметры олицетворения, параметры политики, брандмауэр Windows, среди прочего, все безрезультатно. Есть ли кто-нибудь, кто может помочь?
Изменить: немного покопавшись, я нашел эта маленькая страница от MS, которая действительно указывает на мою ошибку (0x80070005), являющуюся проблемой DCOM, которая возникает во время соединения, а не конкретно ошибкой WMI. Они приводят следующие причины: 1. Сбой учетных данных или 2. Разрешения на запуск DCOM / удаленную активацию. Поскольку моя программа работает при запуске вручную с теми же учетными данными, я должен предположить, что это проблема DCOM. Я установил удаленную / локальную активацию и запуск, чтобы разрешить СИСТЕМУ, ЛОКАЛЬНОЕ ОБСЛУЖИВАНИЕ, ИНТЕРАКТИВНО и администраторов, но это все равно не работает. Поскольку служба работает как локальная система, я полагаю, что этих настроек должно хватить.