В Windows Vista (и я предполагаю, что в Windows 7) Microsoft улучшила безопасность процессов, запускаемых через планировщик задач, а именно: http://technet.microsoft.com/en-us/appcompat/aa906020.aspx:
В планировщике задач Windows Vista значительно улучшена безопасность. Планировщик задач поддерживает модель изоляции безопасности, в которой каждый набор задач, выполняемых в определенном контексте безопасности, запускается в отдельном сеансе. Задачи, выполняемые для разных пользователей, запускаются в отдельных оконных сеансах, полностью изолированно друг от друга и от задач, выполняемых в контексте машины (системы).
Проблема в том, что у меня есть сценарий, который должен запускаться с заданным интервалом и загружать файл через SCP на веб-сервер Linux, для этого я использую Конкурс для хранения ключа SSH, который затем может получить сценарий. Все это прекрасно работает в Windows XP, но из-за режима изоляции в Windows Vista скрипту не разрешается взаимодействовать с процессом Pageant, и передача SCP завершается неудачно.
В утилите настройки планировщика заданий есть опция, в которой вы можете выбрать «Настроить для Windows Server 2003, Windows XP или Windows 2000», это, по крайней мере, заставляет задачу запускаться в интерактивном режиме, что я тоже хочу, но режим изоляции, похоже, все еще включен.
Вопрос: Есть ли способ отключить новый «режим изоляции» в планировщике задач Windows Vista, чтобы он вел себя так же, как Windows XP, позволяя межпроцессное взаимодействие?
Обновление: я не знаю, влияет ли это на «Сессия 0 Изоляция», но в документе на этой странице упоминается следующее:
Служба пытается использовать функции оконных сообщений, такие как SendMessage и PostMessage, для связи с приложением. Это не работает, потому что приложение работает в другом сеансе и, следовательно, имеет другую очередь сообщений. Сообщения никогда не доходят до места назначения. То же самое верно и для приложений, которые пытаются взаимодействовать со службами через оконные сообщения.
Какой Pageant делает ... Но должно ли это быть так же, когда включен параметр «Настроить для Windows XP»?
Эта проблема оказалась из-за описанного мной режима изоляции в Vista / Win7. Pageant работает при общении с клиентскими приложениями путем отправки и получения простых оконных сообщений. Этот метод не работает, когда процесс i изолирован, поскольку программы работают в разных сеансах с разными циклами обработки сообщений.
В итоге я решил эту проблему, переписав конкурс и клиентские приложения в наборе замазки, чтобы вместо этого использовать именованные каналы. Я отправил патч разработчикам putty, но на момент написания он не был добавлен в ствол. Спасибо, открытый исходный код! :)
Поскольку вы сказали, что он работает нормально при запуске вручную, проверьте, откуда вы запускаете скрипт, из папки «Start In (optional)».
Я не знаю, связано ли это, но наши сценарии никогда не запускаются должным образом, даже со всеми правами администратора, если это не указано (попытка запустить сценарий из C: \ Windows \ system32, который, как мне кажется, хорошо защищен ).
Посмотрим, имеет ли это значение.