Предотвратить пользователя от завершения Java-программы? - PullRequest
0 голосов
/ 21 октября 2011

Я хочу установить систему мониторинга на компьютер (программа представляет собой файл JAR) и запускать ее при запуске каждый раз, когда любой пользователь входит в систему. Тем не менее, я не хочу, чтобы пользователь мог прекратить его, поскольку тогда он не сможет больше отслеживаться.

Мы пробовали несколько способов:

  • Установка его как службы - проблема здесь в том, что наша программа больше не работает; он не может подключиться к компьютеру, который его отслеживает. Для этого мы использовали «Another Another Java Wrapper» и изучили некоторые другие оболочки, которые могут помочь нам установить его в качестве службы.

  • Запуск программы при запуске (с использованием запуска папки), но не предоставление обычному пользователю привилегий для редактирования / удаления / возни с файлами. Тем не менее, это, кажется, замедляет весь компьютер? Этого не происходит, когда мы запускаем файл bat, выполняя jar напрямую. Другая проблема заключается в том, что пользователь может просто зайти в диспетчер задач и убить процесс Java.

  • Мы попробовали вариант предыдущего, чтобы решить проблему прекращения процесса с помощью другого процесса. Один будет порождать другой, и эти 2 процесса будут следить друг за другом. Если один завершает работу, другой обнаруживает его и запускает, чтобы запустить снова. Хотя могут возникнуть проблемы, если пользователь достаточно быстр в уничтожении обоих процессов перед повторным вызовом одного из них, большая проблема заключается в том, что иногда возникают проблемы с подключением к другим компьютерам. У нас не было этой проблемы, когда это было всего 1 банка.

Кто-нибудь знает, как можно решить эти проблемы?

Контекст здесь - окна, но если у вас есть предложения по Linux и Mac, это тоже было бы неплохо!

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Путь состоит в том, чтобы запустить программу как службу.Вы должны исследовать любые проблемы между вашим приложением и брандмауэром вашей системы.Если у вас активирован брандмауэр Windows, вы должны добавить исключение для java.exe или javaw.exe.

Чтобы предоставить повышенные привилегии вашей программе, вы можете настроить службу для запуска от имени другого пользователя.Это можно сделать на вкладке «Вход» в свойствах сервиса.

Service properties

0 голосов
/ 21 октября 2011

Вы хотите, чтобы программа запускалась под пользователем с повышенными правами.На Windows это будет администратор, Linux будет использовать root.В Windows вполне вероятно, что вам потребуется запустить его как службу.Но я действительно не знаю, почему это мешало бы сетевым коммуникациям.

...