C # Служба Windows Неверные учетные данные

У меня есть служба Windows C #, используемая для извлечения некоторых файлов с другого компьютера в том же домене. Когда я запускаю свою службу Windows как консольное приложение, она извлекает файлы с другого компьютера. Однако запуск его в качестве возврата службы Windows: недопустимые учетные данные для: 192.168.100.53 (ServerNotFoundMIPException)

Я попытался изменить службу «Вход в систему как локальная служба» или «Сетевая служба», но безуспешно. Ниже приводится метод OnStart: [PermissionSet (SecurityAction.Demand, Name = "FullTrust")] защищенное переопределение void OnStart (string [] args)

В свойствах приложения в разделе «Безопасность» я установил флажок «Включить параметры безопасности ClickOnce», это приложение с полным доверием.

Я использовал следующие учетные данные:

case CredentialType.Windows:
{
var nc = CredentialCache.DefaultNetworkCredentials;

Что мне не хватает, так что моим окнам не удалось получить файлы с другого компьютера?


person Khayralla    schedule 23.08.2013    source источник
comment
Если бы я использовал свой компьютер (uri = localhost), он работал бы как служба Windows, изменяя его на мой IP-адрес машины (uri = 192.168.100.73), это не удалось   -  person Khayralla    schedule 23.08.2013


Ответы (1)


Я предполагаю, что вы читаете файлы из общего ресурса Windows, например \\COMPUTER2\Share\Path\file.ext.

Учетная запись, под которой работает сервер, должна иметь возможность

  1. Доступ к сети,
  2. Выполните аутентификацию с помощью контроллера домена
  3. Возможность входа на КОМПЬЮТЕР2 из сети (назначается через Панель управления-> Инструменты администратора-> Локальная политика безопасности).
  4. Иметь права доступа к рассматриваемому общему ресурсу.

LocalSystem и LocalService терпят неудачу на # 1. Нет доступа к сети.

NetworkService дает вам №1, но дает сбой на №2 - это локальная учетная запись, и контроллер домена не знает об этом.

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

В качестве альтернативы вы можете предоставлять свои файлы по другому протоколу, который не требует аутентификации, например ftp или http.

person Ivan Krivyakov    schedule 23.08.2013
comment
Я использую сторонний api для извлечения определенных файлов, общей папки нет. - person Khayralla; 23.08.2013
comment
Затем это зависит от того, как сторонний API обрабатывает аутентификацию. Если он использует проверку подлинности Windows, скорее всего, вам все равно нужно запустить службу под учетной записью домена. Сетевая безопасность отличается (ортогональна) от .NET Code Access Security. Тот факт, что ваша локальная среда CLR считает, что ваш код полностью доверяет, не имеет большого значения для Windows или стороннего API. - person Ivan Krivyakov; 23.08.2013
comment
Я добавил OurDomain \ MyUsername для входа в AS, и он успешно запустился, поэтому в службах я вижу его [email protected] - person Khayralla; 23.08.2013