Правильный способ доступа к сетевому ресурсу в службе Windows
У меня есть служба Windows, которая требует доступа по требованию к удаленному общему ресурсу CIFS. Всякий раз, когда ему требуется доступ к общему ресурсу, он сначала пытается "смонтировать" его с предоставленными учетными данными,
NET USE \\host\share password /USER:user
использует содержимое общего ресурса, а затем удаляет общий ресурс.
NET USE \\host\share /DELETE
В настоящее время сервис работает только при первом использовании ресурса. При последующих попытках это не работает, и я получаю следующую ошибку:
Сбой NET с кодом выхода 2
Однако эта та же самая логика все прекрасно работает, когда запускается вручную из командной строки; это терпит неудачу только в контексте службы.
У меня вопрос: есть ли лучший, более правильный способ обработки сетевых ресурсов в службе Windows? Согласно этой статье, NET USE
не рекомендуется для использования в сервисах, даже без использования букв дисков. Есть ли альтернатива NET USE
Я должен использовать, или служба должна просто работать как пользователь, отличный от пользователя по умолчанию LocalSystem
пользователь?
В идеале доля должна быть доступна только тогда, когда это необходимо; поэтому я хотел бы сохранить логику, когда общий ресурс удаляется каждый раз, когда это возможно.
1 ответ
Вы должны запускать службу как определенную учетную запись пользователя, и эта учетная запись пользователя должна иметь разрешения для доступа к общему ресурсу.
Вставить имя пользователя и пароль таким образом, это довольно ужасный способ работы. Не только для безопасности, но также для мобильности и управления.