2009-06-30 2 views
3

Я разработал службу Windows для записи PDF-файла в каталог. У службы нет проблем с записью файлов на локальные диски. Но когда он пытается записать на сетевые диски, они терпят неудачу и записывают файл в каталог приложения.службы windows

+0

Вы не упомянули ошибку Win32 API вы получили. – anand

ответ

5

Вот некоторые впечатления, которые я имел при создании той же услуги, что и вы (чтение и сохранение PDF-файла на сетевом диске). У меня было 2 диска: первый без необходимости аутентификации, а второй - для проверки подлинности.

Общие недостатков с Подключенным сетевыми дисками

  • путь UNC против буквы диска: буквы диска не работают, вы должны указать свой путь, используя обозначение UNC. (Например, \\ 10.17.194.1 \ RemoteDir \)

  • Аутентификация: Если сетевой диск нуждается в вас для проверки подлинности, единственным способом я нашел, чтобы создать пользователь проверки подлинности на компьютере под управлением службой. Если для доступа к сетевому диску требуется аутентификация как «RemoteUser» с «RemotePassword», вы должны создать учетную запись RemoteUser/RemotePassword на сервере и позволить службе запускаться как этот пользователь.

    Если у вас нет прав на доступ к каталогу, вы получите исключение, сообщившее вам, что не может найти каталог/файл или, скорее, его не существует.

  • Служба не может установить соединение сама по себе: Кроме того, необходимо обязательно получить доступ к сетевому диску хотя бы один раз вручную из проводника, чтобы вы могли его просмотреть. Моя служба не смогла установить соединение с сетевым диском сама по себе, она должна была быть установлена ​​в проводнике раньше.

Я надеюсь, что любой из этих пунктов поможет вам.

0

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

+0

Служба работает с моей локальной учетной записью. Если я запускаю приложение, используя консольный режим, он записывается в сетевой сопоставленный диск. – gopal

2

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

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

0

Я думаю, что по умолчанию служба Windows работает под учетной записью LocalService, поэтому по умолчанию сервисы не получают никаких специальных привилегий. Возможно, если вы измените учетную запись службы на учетную запись NetworkService, она будет работать.

+0

Я попробовал. Служба работает в режиме NetworkService. Но он не может записываться в сетевой карте. – gopal

+1

Я нашел расширенное обсуждение этой проблемы: http://bytes.com/groups/net-c/234214-access-mapped-drive-windows-service надеюсь, что это поможет. – Jonathan

+1

Подключенные диски не будут работать для службы. Вместо этого вам нужно использовать UNC-путь. – tomfanning

0

Я хотел бы проверить следующее:

  1. ли ваша программа работать, когда не работает как сервис?
  2. У вас нет никаких элементов графического интерфейса, таких как коробки ошибок (глупый вопрос может быть ;-))?
  3. Вы пишете службу с помощью .NET?если да, возможно, есть проблемы с динамическими правами (CAS)

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

CAS

Смежные вопросы