Учетная запись .NET Com Interop - PullRequest
1 голос
/ 20 июня 2011

Я пишу службу Windows .NET на C #. Это выполняется под учетной записью локальной системы. Однако эта служба должна вызывать старый компонент COM. Этот старый COM-компонент содержит много доступа к файлам с использованием сопоставленных букв дисков для сетевых дисков (это не очень хорошо, но я не могу переписать его). Я предполагаю, что этот COM-компонент также загружается под локальной системной учетной записью, и поэтому эти сопоставления дисков не будут выполнены, поскольку они не существуют.

Какие способы обойти это? Могу ли я загрузить компонент COM под учетной записью пользователя, которая имеет эти сопоставления? Если так, то как? Или есть лучший способ

Обойдется ли проблема при запуске всей службы Windows под учетной записью пользователя?

Ответы [ 2 ]

0 голосов
/ 20 июня 2011

Чтобы повторить мой комментарий в качестве ответа:

Вместо сопоставления дисков, вы можете вместо этого напрямую обращаться к путям файлов UNC?

Добавление еще одного пункта относительно олицетворение :

Вы можете подражать строкам кода, которые вы должны запускать под другим пользователем через (например) мой класс Impersonator , я написал несколько лет назад.

0 голосов
/ 20 июня 2011

Вы можете разместить компонент как приложение COM +, которое позволит вам указать, под какой учетной записью работает пользователь.Затем вам нужно будет выполнить соответствующую работу для правильного доступа к COM-компоненту в .NET, но он должен работать.

Другой вариант - иметь службу, которая может работать под вашей учетной записью, а затем совершать звонки черезWCF для выполнения вызовов на сервере.

Принцип для обоих одинаков, хотя вы в основном делаете вызов в другом домене приложения и перенаправляете запрос / ответ между другим доменом приложения и тем, который выполняется вашим приложениемв.

...