예제 #1
0
        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
            });
        }
예제 #2
0
파일: TokensApi.cs 프로젝트: trumsuhu/gsudo
 public static extern bool SaferCreateLevel(
     SaferScopes dwScopeId,
     SaferLevels dwLevelId,
     int OpenFlags,
     out IntPtr pLevelHandle,
     IntPtr lpReserved);