Удаление файлов с помощью приложения-службы - PullRequest
1 голос
/ 08 января 2009

Я использую FileSystemWatcher в VS2005 для мониторинга каталогов и подумал, чтобы изменить приложение на службу. Все работает нормально, пока служба не попытается удалить файл. Отправляя исключение в программу просмотра событий, я получаю исключение System.UnauthorizedAccessException. Рассматриваемый файл (тестирование) может быть удален тем же кодом FileSystemWatcher при запуске в форме. Я проверил права LocalService на папку и даже изменил, кто запускал службу. Я закомментировал код для FileSystemWatcher и до сих пор не могу удалить файлы с помощью сервиса Я пытаюсь использовать File.Delete (имя файла). Думая, что проблема может быть с «Файл», я попытался File.Copy (имя файла, имя нового файла), и это прекрасно работает

Ответы [ 2 ]

1 голос
/ 08 января 2009

Попробуйте использовать обычную старую учетную запись пользователя для службы вместо использования LocalSystem. Таким образом, вы можете предоставлять определенные разрешения для службы и не предоставлять ей доступ ко всем функциям LocalSystem.

Кроме того, я обнаружил, что FileSystemWatcher - это боль, а не польза. Часто он обнаруживает присутствие файла до его полной записи, и это вызывает все виды проблем при работе с файлом. Попробуйте использовать опрос (проверяйте папку каждые несколько секунд - Не используйте класс Timer - у него есть собственные проблемы !) Для новых файлов.

0 голосов
/ 11 января 2009

"поменял кто управлял сервисом" Это был тот, кто запустил службу или учетную запись, под которой была настроена служба?

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

...