Windows Vista isolates services in Session 0 and runs programs in other sessions. Therefore, services are protected from attacks that originate in program code. In Microsoft Windows Server 2003 and earlier versions of Windows, all services run in Session 0 together with programs. This behavior can pose a security risk because services run with elevated permissions. Therefore, these services are targets for malicious agents who are looking for a way to elevate their permissions.
For more information about how Session 0 isolation affects services and drivers, visit the following Microsoft Web page:
Service guidance
Services should not provide direct user interaction by using the
SetProcessWindowStation function and the
SetThreadDesktop function. A service should never open a window on the default desktop. This includes simple user notification dialog boxes such as a "Printer Out of Paper" notification or a Driver Package restart request. Instead, services that need user interaction should use a client/server model. Such services should communicate through client/server style mechanisms such as remote procedure call (RPC) or COM. The use of named objects must follow the "Terminal Services Programming Guidelines for Kernel Object Namespaces." These guidelines are documented in the SDK because the service runs in Session 0 and the client computer runs in a later session.