Назад | Перейти на главную страницу

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

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

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

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

NET USE \\host\share /DELETE

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

NET не удалось с кодом выхода 2

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

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

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

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

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