# Function Reference

# _Security__ImpersonateSelf

Obtains an access token that impersonates the calling process security context

#include <Security.au3>
_Security__ImpersonateSelf ( [$iLevel = $SECURITYIMPERSONATION] )

## Parameters

$iLevel | [optional] Impersonation level of the new token: $SECURITYANONYMOUS. The server process cannot obtain identification information about the client, and it cannot impersonate the client. $SECURITYIDENTIFICATION. The server process can obtain information about the client, such as security identifiers and privileges, but it cannot impersonate the client. $SECURITYIMPERSONATION. The server process can impersonate the clients security context on its local system. The server cannot impersonate the client on remote systems. $SECURITYDELEGATION. The server process can impersonate the client's security context on remote systems.

## Return Value

Success: | True.
Failure: | False.

## Related

_Security__OpenThreadTokenEx

## See Also

Search ImpersonateSelf in MSDN Library.

## Example

    #include <Security.au3>
    #include <WinAPIError.au3>
    #include <WinAPIHObj.au3>

    Local $hToken = _Security__OpenThreadToken($TOKEN_ADJUST_PRIVILEGES)
    If $hToken Then
        _WinAPI_CloseHandle($hToken)
    Else
        ConsoleWrite("_Security__OpenThreadToken failed with error description: " & _WinAPI_GetLastErrorMessage() & @CRLF)
        ConsoleWrite("New attempt..." & @CRLF)

        ; Read remarks for  _Security__OpenThreadToken function
        _Security__ImpersonateSelf()
        $hToken = _Security__OpenThreadToken($TOKEN_ADJUST_PRIVILEGES)
        If $hToken Then
            ConsoleWrite(">>> SUCCESS, $hToken = " & $hToken & @CRLF)
            _WinAPI_CloseHandle($hToken)
        Else
            ConsoleWrite("!FAILED" & @CRLF)
        EndIf
    EndIf