public static extern bool SetTokenInformation( SafeTokenHandle hToken, TOKEN_INFORMATION_CLASS tokenInfoClass, IntPtr pTokenInfo, Int32 tokenInfoLength);
public static extern bool DuplicateTokenEx( SafeTokenHandle hExistingToken, UInt32 desiredAccess, IntPtr pTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, out SafeTokenHandle hNewToken);
public static extern bool OpenProcessToken( IntPtr hProcess, UInt32 desiredAccess, out SafeTokenHandle hToken);
public static extern bool CreateProcessAsUser( SafeTokenHandle hToken, string applicationName, string commandLine, IntPtr pProcessAttributes, IntPtr pThreadAttributes, bool bInheritHandles, uint dwCreationFlags, IntPtr pEnvironment, string currentDirectory, ref STARTUPINFO startupInfo, out PROCESS_INFORMATION processInformation);