Запуск службы Windows Out of Process COM-сервер - CSIDL_APPDATA возвращается как другой путь пользователя

У меня есть служба Windows, написанная на C#. Этот сервис порождает несколько потоков MTA. В каждом из этих потоков создается экземпляр класса COM вне процесса. Я настроил службу для работы от имени текущего пользователя (добавьте соответствующий логин в учетные данные). Когда служба запускается, из диспетчера задач появляется, что она работает как мой пользователь. Если служба выполняет проверку локального роумингового каталога пользователя, она возвращает мой каталог пользователя, как и ожидалось. Когда мой COM-класс, который работает как вне процесса exe, делает эту проверку, он возвращает путь в Windows\System32\Config\systemprofile\AppData\Roaming.

Может ли кто-нибудь пролить некоторый свет на то, что здесь происходит, и даже более конкретно, как я могу получить сервер вне процесса для работы в качестве пользователя службы. Я проверил в диспетчере задач и в соответствии с диспетчером задач исполняемый файл работает как тот же пользователь (в том же сеансе), что и служба.

Не уверен, что ОС является фактором, но я видел это как в Vista 32 (sp2), так и в Win7 64 (sp1)

1 ответ

Решение

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

Другие вопросы по тегам