In prior versions of Windows before Vista you could have a Windows Service interact with the current logged in desktop user to easy display information on the screen from the service. In Windows Vista Session 0 was added for security to isolate the services from the desktop. What is an easy way to communicate between a service and an application running outside of Session 0? So far I have gotten around this by using TCP/IP to communicate between the two but it seems to be kind of a sloppy way to do it.
Windows – How to communicate between Windows Vista Session 0 and Desktop
ipcwindows-vista
Related Topic
- Python – Windows Server 2008 or Vista
- R – How would you communicate a wcf service with a windows service
- R – Ghosts windows when color scheme is NOT Aero on Vista
- R – Can users interact with services directly on Microsoft Vista
- R – Vista services: Can show form on invisible desktop
- Hyper-V not allowing the mouse in Windows Vista
Best Answer
You can use shared memory or named pipe to facilitate IPC as well. Conceptually this is similar to TCP/IP, but you don't have to worry about finding an unused port.
You have to make sure that the named objects you create are prefixed with "Global\" to allow them to be accessed by all sessions as described here.
AFAIK there is no way for a service to directly interact with the desktop any more.