public static TokenProvider CreateFromSaferApi(SaferLevels saferLevel) { IntPtr hSaferLevel; SafeTokenHandle hToken; if (!TokensApi.SaferCreateLevel(TokensApi.SaferScopes.User, saferLevel, 1, out hSaferLevel, IntPtr.Zero)) { throw new Win32Exception(); } try { if (!TokensApi.SaferComputeTokenFromLevel(hSaferLevel, IntPtr.Zero, out hToken, TokensApi.SaferComputeTokenFlags.None, IntPtr.Zero)) { throw new Win32Exception(); } } finally { SaferCloseLevel(hSaferLevel); } return(new TokenProvider() { Token = hToken }); }
public static extern bool SaferCreateLevel( SaferScopes dwScopeId, SaferLevels dwLevelId, int OpenFlags, out IntPtr pLevelHandle, IntPtr lpReserved);