Выполните файл jar при Windows инициализации и после входа пользователя (не как службы), который вызывает процесс с GUI - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть файл JAR, и я хотел запустить этот файл в качестве службы. Когда исполняется этот .jar, он открывает другую программу, которую я хочу видеть GUI. Но обратите внимание: только вторая программа нуждается в GUI (.jar нет). Я открываю эту вторую программу, используя следующее:

ProcessBuilder processBuilder = new ProcessBuilder(cmdCommand);
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();

В поисках этой проблемы я обнаружил, что если я выполняю свой файл .jar в качестве службы, я не вижу процесса, запущенного GUI, поскольку службы выполняются в еще один рабочий стол с Windows Vista. Для создания сервиса я использовал Java Service Wrapper. На этом руководстве они учат, как использовать конфигурацию wrapper.ntservice.interactive, чтобы служба отображала GUI. Они также предупреждают:

" Начиная с Windows Vista и Server 2008, Microsoft изменила способ, которым сервисы могут взаимодействовать с рабочим столом. Они решили, что по соображениям безопасности, сервисам теперь разрешено только показать их GUI на специальном рабочем столе, с которым может взаимодействовать только служба. К сожалению, это делает интерактивные функции практически бесполезными. Мы ищем способы отображения GUI другим способом. Оставайтесь с нами. Если вы делаете поиск в Inte rnet по ключевым словам "диалогового окна интерактивных сервисов Vista", вы найдете ряд ссылок на то, как Windows будет отображать диалоговое окно на рабочем столе пользователя всякий раз, когда сервис обновляется до GUI в сервисах Есть несколько важных причин безопасности, почему это было отключено в Windows. Но если вам действительно нужно включить эту функцию, это можно сделать, отредактировав реестр Windows и установив HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Windows \ NoInteractiveServices to 0. Alwa будьте очень осторожны при редактировании реестра, так как вы можете легко испортить вашу систему, изменив неверные значения."

Я пытался настроить NoInteractiveServices на 0, но пока не работает.

Итак, как я могу выполнить программу .jar, когда windows инициализируется и пользователь выполняет вход в систему, и все еще может видеть GUI моего открытого процесса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...