У меня есть исполняемый файл, который запускается службой Windows, эта программа будет запущена на машине клиентов и должна будет подключиться к удаленному долю для выполнения особая задача. Эта доля указана клиентом через пользовательский интерфейс, поэтому мы не знаем этого заранее, потому что он не может быть «жестко запрограммирован» или заранее скопирован.Исполняемый файл, запускаемый службой Windows с использованием локальной системной учетной записи, не может получить доступ к общим сетевым ресурсам
Раньше мы требовали от клиента входа в систему на своем компьютере и запуска исполняемого файла при входе в систему, но мы всегда хотели, чтобы наша программа запускалась в рамках службы и не требовала входа в систему, проще для клиента и предотвратить случайные отходы, закрывающие наше программное обеспечение. Таким образом, это также означает, что мы не знаем, какие локальные учетные записи пользователей существуют на компьютере-клиенте, поэтому нам нужно запустить службу, используя локальную учетную запись системы.
У нас есть, как упоминалось выше, служба обертки для запуска исполняемого файла и выполнения различных задач. В большинстве случаев это нормально работает и обеспечивает доступ к основной сети. Цель нашего программного обеспечения в основном заключается в захвате пакетов и т. Д.
Однако, когда программное обеспечение пытается подключиться к общей папке Windows (UNC-имя), оно не может подключиться. Если, если исполняемый файл был запущен вручную, он подключается нормально.
Рекомендации, которые я обычно видел, чтобы решить эти проблемы, говорят, что все используют учетную запись пользователя, так как системная учетная запись не может получить доступ к сетевым ресурсам, но в нашем случае это невозможно. Есть ли другой способ заставить это работать?
Редактировать: Я забыл упомянуть, что это приложение могло (и чаще всего будет) работать на Win2K, а не XP, и я думаю, что я прав, говоря, что учетная запись локальной сети недоступна до XP?
Спасибо. Ваше последнее предложение похоже на способ сделать это в моем случае, я создал специальную учетную запись, и я могу запустить свой исполняемый файл с помощью этой учетной записи и CreateProcessAsUser(), тогда он, похоже, сможет получить доступ к сетевому ресурсу (если он находится в группе «Администраторы») ... – 2008-10-31 15:02:05
Очевидно, что вы должны предоставить соответствующему аккаунту соответствующий доступ к ресурсу. – 2008-11-01 16:17:55