コード例 #1
0
 ////////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////////
 public Boolean ImpersonateUser(Int32 processId)
 {
     GetPrimaryToken((UInt32)processId, "");
     if (hExistingToken == IntPtr.Zero)
     {
         return(false);
     }
     if (!Unmanaged.DuplicateTokenEx(
             hExistingToken,
             (UInt32)Enums.ACCESS_MASK.MAXIMUM_ALLOWED,
             IntPtr.Zero,
             Enums._SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation,
             Enums.TOKEN_TYPE.TokenPrimary,
             out phNewToken
             ))
     {
         GetError("DuplicateTokenEx: ");
         return(false);
     }
     Console.WriteLine(" [+] Duplicate Token Handle: " + phNewToken.ToInt32());
     if (!Unmanaged.ImpersonateLoggedOnUser(phNewToken))
     {
         GetError("ImpersonateLoggedOnUser: ");
         return(false);
     }
     return(true);
 }