This uses the Win32 apis to:
- Find the currently active user session
- Spawn a new process in that session
This allows a process running in a different session (such as a windows service) to start a process with a graphical user interface that the user must see.
Note that the process must have the appropriate (admin) privileges for this to work correctly.
using murrayju.ProcessExtensions;
// ...
ProcessExtensions.StartProcessAsCurrentUser("calc.exe");