Служба Windows и Dll на сетевом диске - PullRequest
0 голосов
/ 30 марта 2012

У меня есть служба Windows, которая должна использовать файл DLL на сетевом диске.Когда я был подключен к этому сетевому диску, я добавил эту DLL в качестве ссылки на мою службу Windows.Автоматически еще 2 справочных файла были созданы путем добавления этого файла DLL.В этой службе есть код, который просто создает экземпляр класса из dll.Во время отладки этого кода в Visual Studio 2010, когда я нажимаю F10 (Step Over), он выдает исключение:

"Получение фабрики классов COM для компонента с CLSID {65EB3876-89FF-459F-BF24-02E8DD7F2DB2} не удалось из-за следующей ошибки: 8007007e Указанный модуль не найден. (Исключение из HRESULT: 0x8007007E). "

Я использую те же dll и те же коды в приложении Windows Forms для тестирования.Он не выдает ошибку и успешно создает экземпляр класса.

Может ли это быть что-то, связанное с разрешением для сетевого диска?

1 Ответ

1 голос
/ 02 апреля 2012

Служба Windows, вероятно, будет работать с другими учетными данными, поэтому сопоставления дисков не являются "видимыми" для этой учетной записи, и, следовательно, путь к DLL не существует. Код ошибки указывает именно на эту проблему.

Службы и перенаправленные диски :

Отображения дисков существуют в контексте входа в систему, поэтому если приложение работает в контексте учетной записи LocalService, а затем любой другой служба, работающая в этом контексте, может иметь доступ к подключенному диску.

Вам необходимо перерегистрировать DLL, используя путь UNC, или скопировать DLL на локальный диск и перерегистрировать его там, или настроить службу для запуска с теми же учетными данными, что и для интерактивных, если существуют сопоставления дисков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...