Discussion:
Procrun procsrv.exe --Type=interactive. Service Cannot place icon in system tray.
Anthony Holland
2018-10-03 11:46:39 UTC
Permalink
Hi

I have wrapped up a java/scala program in a jar and can use it as a service
using procsrv. It installs, can be started and stopped. Great.

It contains some code that places an icon in the system tray. This code is
executed "successfully" (including SystemTray.isSupported returning true),
but the icon does not actually appear in the system tray. I tried showing a
window too - and the behaviour is the same. Nothing shows. I pass the
parameter --Type=interactive, and the only effect that it set the checkbox
in the services properties dialog that says "Allow service to interact with
desktop". It still doesn't show the GUI. In that dialog I've changed the
account to my own account, too. No effect.

I can get the GUI to show either by just running the program using java, or
by using "procsrc run <myservicename>".

Arguably a service should not have a GUI, but the --Type=interactive flag
seems to imply that this is supported, and I'd like to make it work.

Thank you
Anthony
Bernd Eckenfels
2018-10-04 03:00:32 UTC
Permalink
AFAIK with recent Windows Security improvements there is a separation between services and Desktop, the session a service get cannot anymore display GUI controls.

The NoInteractiveService setting can be turned off, but you should probably not. It is described here: https://docs.microsoft.com/en-us/windows/desktop/services/interactive-services

This is not specific to Java, however with Java it will be specifically hard to use all the required system functions to make it work and still secure.

I would say, just don’t use it.
Gruss
Bernd

Gruss
Bernd
--
http://bernd.eckenfels.net

________________________________
Von: Anthony Holland <***@gmail.com>
Gesendet: Donnerstag, Oktober 4, 2018 1:42 AM
An: ***@commons.apache.org
Betreff: Procrun procsrv.exe --Type=interactive. Service Cannot place icon in system tray.

Hi

I have wrapped up a java/scala program in a jar and can use it as a service
using procsrv. It installs, can be started and stopped. Great.

It contains some code that places an icon in the system tray. This code is
executed "successfully" (including SystemTray.isSupported returning true),
but the icon does not actually appear in the system tray. I tried showing a
window too - and the behaviour is the same. Nothing shows. I pass the
parameter --Type=interactive, and the only effect that it set the checkbox
in the services properties dialog that says "Allow service to interact with
desktop". It still doesn't show the GUI. In that dialog I've changed the
account to my own account, too. No effect.

I can get the GUI to show either by just running the program using java, or
by using "procsrc run <myservicename>".

Arguably a service should not have a GUI, but the --Type=interactive flag
seems to imply that this is supported, and I'd like to make it work.

Thank you
Anthony

Loading...