Я запускаю исполняемый файл Dotnet 3.5 в Windows 7 Ent в качестве сценария запуска компьютера GPO в домене. Сценарий находится в общей сетевой папке. EXE запускается как локальная система. EXE работает правильно.
Я хотел бы получить доступ к веб-службе в этом exe, но похоже, что локальная система не имеет доступа к сетевым ресурсам согласно документации. Однако, если тот же исполняемый файл скопирован на диск C и запущен оттуда под той же учетной записью и при тех же условиях (например, сценарий запуска GPO), тогда можно будет получить доступ к веб-службе.
Как получается, что локальная система имеет доступ к веб-службе при запуске с диска C :, но не с общего сетевого ресурса? Можно ли что-нибудь сделать, чтобы заставить его работать из общего сетевого ресурса без предварительного копирования на локальный диск? Локальная система такая же, как SYSTEM и такая же, как NTAuthority \ system?
Я пробовал следующее, чтобы заставить его работать. Ничего из этого не работает:
- Выдать себя за пользователя домена в коде.
- Полное доверие ко всем зонам в конфигурации безопасности .Net
- Добавьте общий сетевой ресурс в список надежных сайтов в IE.
- Используйте имя netbios вместо полного имени файлового сервера, то есть \ server \ share, а не \ server.domain.com \ share
Следующее, что я не могу сделать, чтобы решить эту проблему:
- Измените учетную запись службы клиента групповой политики на пользователя домена
- Запустите exe как сценарий входа в систему. Это должен быть сценарий запуска.
Чтобы воспроизвести эту проблему, я делаю следующее:
- Создайте простой исполняемый файл с некоторой сетевой функцией, например WebClient.DownloadString ("http://www.google.com" )
- Развернуть exe в общий сетевой ресурс
- Запустите как обычный пользователь, чтобы показать, что ошибки нет
- Запустите whoami, чтобы показать текущего пользователя
- запустите psexec -s -i cmd.exe
- Cmd запустится как SYSTEM (Local System или NT Authority \ System)
- Запустите whoami, чтобы показать текущего пользователя
- Запустите exe из сетевой папки, чтобы показать, что страница не загружается.
- Скопируйте exe на диск C.
- Запустите exe, чтобы показать, что страница загружена.