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

StackOverflow https://stackoverflow.com/questions/854379

Вопрос

У меня есть служба Windows, настроенная на копирование файлов из локального каталога в общий ресурс Samba.

Служба подключается к серверу по UNC-пути (т. е. emoteserver\shareddir).

Я вошел в систему как пользователь, под которым запущена служба, и смог копировать файлы и создавать файлы в общем ресурсе Samba, используя путь UNC.

Однако при запуске службы я получаю исключения ввода-вывода, которые предполагают ошибку входа в систему.Я запустил монитор процесса в этом поле, наблюдаю за службой и вижу, что она находит путь UNC, но получает ошибку входа при попытке записи в общий ресурс.

Это использует простой вызов .net System.IO.File.Copy.

Я не понимаю ошибок, поскольку, войдя в систему под тем же пользователем, я могу копировать и создавать файлы на общем ресурсе.

Есть идеи?

Редактировать:Текст исключения

Ошибка в основном цикле обработки (dowork ()):Ошибка входа в систему:неизвестное имя пользователя или плохой пароль.

Системное исключение:Ошибка на myservice.processexporttransferfiledirectories и значения:D: export, remoteServer intray, d: export archive ---> System.io.ioexception:Ошибка входа в систему:неизвестное имя пользователя или неверный пароль.

at System.io .__ error.winioError (int32 ErrorCode, String wylyfullPath) At System.io .__ error.winioError () at system.io.file.move (String SourceFilename, String destfilename)
at myservice.consumer.businesslogic.wmsfacade.moveandarchivefile (String SourceFolder, String TargetFolder, String ArchiveFolder, String RootFolder, LogCategory LogCategory, LogCounter logCounter) --- Конец внутреннего стека исключений --- at myservice.consumer.businessnesslogic.wmsfacade. MoveAndarchiveFile (String SourceFolder, String TargetFolder, String ArchiveFolder, String RootFolder, LogCategory LogCategory, LogCounter LogCounter) на myservice.consumer.businesslogic.wmsfacade.processexportTransfer (Idiction's FileDectories) atyService.coreRpareSfer

Это было полезно?

Решение

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

До сих пор не понимаю, почему при использовании другой учетной записи я мог копировать/создавать файлы на общем ресурсе с помощью проводника Windows, но когда служба работала под той же учетной записью, она вообще не могла получить доступ к общему ресурсу :(

Другие советы

Я бы рекомендовал сначала подключить диск, а затем скопировать файл на подключенный диск вместо общего ресурса.

Вы можете подключить диск с помощью команды dos net use.Например:

System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")

Это должно решить любые проблемы со входом в систему.

Очень полезным инструментом в вашей ситуации является монитор процесса.Просто запустите его от имени администратора и добавьте следующий фильтр:

Process Name is "your_process.exe" AND Operation is "CreateFile"

Вы увидите подробную информацию о файлах, которые пытается использовать ваш процесс.

Как уже упоминалось, когда я вхожу в систему с той же учетной записью, которую работает служба, у меня нет проблем, копирующих и создавая файлы в общем.- oded 1 мин назад

Предоставили ли вы учетной записи пользователя, под которой работает служба, разрешения «Вход в систему как служба» в локальной политике безопасности??

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top