If the service is running as local system, WTSQueryUserToken is the easiest way to get a token to run code in a given session.
Instead of a modal window, consider creating a new desktop (CreateDesktop) and switching to it. You can't suppress control-alt-delete, but I believe that when the control-alt-delete menu is dismissed the system will normally return to your desktop. All other special key sequences should be suppressed because hooks only affect the desktop associated with the application that installs them.