Хорошо известно, что при запуске задач через TaskScheduler в последних версиях Windows, если задача «запускается независимо от того, вошел ли пользователь в систему или нет», задача не будет выполняться в интерактивном режиме, т. е. она не запустит пользовательский интерфейс.
Для справки, это согласно Microsoft и выделено в этот вопрос суперпользователя и этот вопрос StackOverflow:
Вы можете указать, что задача должна выполняться, даже если учетная запись, под которой запланировано выполнение задачи, не вошла в систему при запуске задачи. Для этого выберите переключатель с надписью «Выполнить», независимо от того, вошел ли пользователь в систему или нет. Если этот переключатель выбран, задачи не будут выполняться в интерактивном режиме. Чтобы задача выполнялась в интерактивном режиме, выберите переключатель «Выполнять только при входе пользователя в систему».
Однако моя проблема является производной от этого.
Задача, запускаемая TaskScheduler, представляет собой клиентское приложение Java, которому можно дать указание запускать процессы — они запускаются через ProcessBuilder в клиентском приложении. Таким образом, это нормально, что это клиентское приложение скрыто / не запускает пользовательский интерфейс — действительно, пользовательского интерфейса нет.
Однако, если клиентское приложение запускается через TaskScheduler для «запуска независимо от того, вошел ли пользователь в систему или нет», как указано выше, то любые процессы, запускаемые ProcessBuilder в клиентском приложении, также не могут работать в интерактивном режиме / не могут отображать пользовательский интерфейс. Это проблема, так как некоторые процессы, запущенные клиентом, являются приложениями пользовательского интерфейса.
Я не уверен, почему это так, но на самом деле я пытаюсь выяснить, есть ли обходной путь - например. некоторые переменные среды или свойства, которые можно добавить, чтобы видимый процесс запускался (невидимым) клиентом.
есть идеи?