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