Depending on the token you are trying to fake, you will need certain privileges, in particular TCB. Services have this. An example is Nebett's Windows NT / 2000 API Reference.
However, services that create a process as SYSTEM on the current desktop are not so easy with Vista. Improved session separability is important here. However, you could impersonate the user at the other end of the pipe, and the current thread should be able to act as that user (e.g. SYSTEM).
source share