Есть ли способ разрешить службе Windows (неуправляемый c ++) записывать файлы в общую сетевую папку? - PullRequest
2 голосов
/ 06 февраля 2009

Я попытался запустить службу в «Локальной системе»: не работает.

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

Нужно ли для этого создавать отдельное приложение и запускать его как пользователь с правами на общую сетевую папку?

Спасибо

Nic

Ответы [ 4 ]

2 голосов
/ 06 февраля 2009

Вы должны использовать UNC-пути (как предложил Скотт) и запускать систему под явной учетной записью, которая имеет доступ к сетевому ресурсу; это должно работать.

Это , вероятно, не будет работать в LocalSystem, потому что это специальная учетная запись пользователя в Windows с доступом только локальной системы. LocalSystem не имела доступа к сети в NT4, и в 2000+ он рассматривается как учетные записи компьютера для доступа к сети и подчиняется ограничениям доступа в локальной политике безопасности. Подробнее см. на этой странице .

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

0 голосов
/ 06 февраля 2009

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

Он не обязательно будет работать на общих ресурсах Novell Netware или других «нестандартных» ресурсах (у нас были проблемы с этим в прошлом, но в настоящее время Netware в значительной степени не имеет значения.)

0 голосов
/ 06 февраля 2009

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

  • Используйте обычную учетную запись (это проще).
  • Протестируйте ваше приложение как консольное приложение.
  • Настройте аудит на клиенте, чтобы записать все в журнал безопасности. Это делается из приложения локальной политики безопасности. И сделайте то же самое на сервере (если можете).

Этого должно быть достаточно, чтобы найти проблему.

Обновление 1 : В ответ на комментарий, который я считаю неправильным (но, возможно, я ...). Служба, к которой относится комментарий (Служба без доступа к сети), называется локальной учетной записью службы (NT AUTHORITY \ LocalService). Обычно он используется в удостоверениях пулов приложений, но может использоваться в службах. Это не то же самое, что локальная системная учетная запись.

из MSDN :

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

0 голосов
/ 06 февраля 2009

Вы, вероятно, можете использовать олицетворение для получения необходимых учетных данных: http://msdn.microsoft.com/en-us/library/aa376391(VS.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...