The OpenProcessToken function opens the access token associated with a process.
BOOL OpenProcessToken(
| 
 HANDLE ProcessHandle,  | 
 // handle to process  | 
| 
 DWORD DesiredAccess,  | 
 // desired access to process  | 
| 
 PHANDLE TokenHandle  | 
 // pointer to handle of open access token  | 
| 
 );  | 
| 
 Value  | 
 Meaning  | 
| 
 TOKEN_ADJUST_DEFAULT  | 
 Required to change the default ACL, primary group, or owner of an access token.  | 
| 
 TOKEN_ADJUST_GROUPS  | 
 Required to change the groups specified in an access token.  | 
| 
 TOKEN_ADJUST_PRIVILEGES  | 
 Required to change the privileges specified in an access token.  | 
| 
 TOKEN_ALL_ACCESS  | 
 Combines the STANDARD_RIGHTS_REQUIRED standard access rights and all individual access rights for tokens.  | 
| 
 TOKEN_ASSIGN_PRIMARY  | 
 Required to attach a primary token to a process in addition to the SE_CREATE_TOKEN_NAME privilege.  | 
| 
 TOKEN_DUPLICATE  | 
 Required to duplicate an access token.  | 
| 
 TOKEN_EXECUTE  | 
 Combines the STANDARD_RIGHTS_EXECUTE standard access rights and the TOKEN_IMPERSONATE access right.  | 
| 
 TOKEN_IMPERSONATE  | 
 Required to attach an impersonation access token to a process.  | 
| 
 TOKEN_QUERY  | 
 Required to query the contents of an access token.  | 
| 
 TOKEN_QUERY_SOURCE  | 
 Required to query the source of an access token.  | 
| 
 TOKEN_READ  | 
 Combines the STANDARD_RIGHTS_READ standard access rights and the TOKEN_QUERY access right.  | 
| 
 TOKEN_WRITE  | 
 Combines the STANDARD_RIGHTS_WRITE standard access rights and the TOKEN_ADJUST_PRIVILEGES, TOKEN_ADJUST_GROUPS, and TOKEN_ADJUST_DEFAULT access rights.  | 
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
AdjustTokenGroups, AdjustTokenPrivileges, GetTokenInformation, OpenThreadToken, SetTokenInformation