Отказано в доступе при попытке удаленного вызова WMI из службы

У меня есть приложение C #, которое подключается через WMI ко многим удаленным системам, как в домене, так и автономно. Программа предоставляет wmi учетные данные и использует олицетворение. При запуске вручную (с консоли) подключается нормально и все хорошо. Однако, когда тот же самый .exe вызывается из службы (запущенной как локальный пользователь), он всегда получает 0x80070005 (E_ACCESSDENIED) при вызове Connect () в ManagementScope.

Я довольно много поискал и нашел много, казалось бы, полезных статей на похожие темы, но ни одна из них не работает. Этот и его [последующий пост] [2] на сайте MS очень похожи, за исключением того, что мой сбой происходит при подключении, а не при попытке выполнить запрос, так что это похоже на проблему с разрешениями локальной системы.

Я испортил разрешения DCOM, разрешения удаленного взаимодействия WMI, параметры олицетворения, параметры политики, брандмауэр Windows, среди прочего, все безрезультатно. Есть ли кто-нибудь, кто может помочь?

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


person Fred Smithe    schedule 28.07.2012    source источник
comment
Вы исправили эту проблему? Похожая проблема здесь.   -  person dalvarezmartinez1    schedule 30.03.2015


Ответы (1)


Возможно, я слишком упрощаю или не полностью понимаю вашу проблему, но мне кажется, что если вы пытаетесь получить доступ к удаленному провайдеру WMI через службу, имеющую только учетные данные с локальной машины аккаунт, такие усилия всегда терпят неудачу (по замыслу). Нет пути для аутентификации от MACHINE \ account до OTHERMACHINE \ account или DOMAIN \ account. Опять же, если я слишком упрощаю или неправильно понимаю, мои извинения.

person David W    schedule 28.07.2012
comment
Привет, Дэвид, спасибо за ответ. Прошу прощения, если я не разъяснил свою ситуацию. Приложение C # предоставляет аутентификацию / учетные данные для удаленного компьютера и не полагается на доверие учетной записи домена / компьютера. Фактически, целевые компьютеры находятся как в исходном домене, так и за его пределами. Я также пробовал запускать это на автономной рабочей станции (XP), и у меня не получалось точно так же. В этом больше смысла? - person Fred Smithe; 29.07.2012
comment
Вероятно, вы уже выбрали этот путь, но я думаю, что я бы потратил некоторое время на установку копии ProcMon как на исходной, так и на конечной машинах, запустил вашу службу и позволил ProcMon поглотить результаты, чтобы увидеть < i> именно когда произойдет сбой. Это может дать вам лучшее представление о том, где вам нужно сосредоточить исправление. - person David W; 30.07.2012