Правильный способ доступа к сетевому ресурсу в службе Windows

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

NET USE \\host\share password /USER:user

использует содержимое общего ресурса, а затем удаляет общий ресурс.

NET USE \\host\share /DELETE

В настоящее время сервис работает только при первом использовании ресурса. При последующих попытках это не работает, и я получаю следующую ошибку:

Сбой NET с кодом выхода 2

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

У меня вопрос: есть ли лучший, более правильный способ обработки сетевых ресурсов в службе Windows? Согласно этой статье, NET USE не рекомендуется для использования в сервисах, даже без использования букв дисков. Есть ли альтернатива NET USE Я должен использовать, или служба должна просто работать как пользователь, отличный от пользователя по умолчанию LocalSystem пользователь?

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

1 ответ

Решение

Вы должны запускать службу как определенную учетную запись пользователя, и эта учетная запись пользователя должна иметь разрешения для доступа к общему ресурсу.

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

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