Ejemplo n.º 1
0
        public static List <PrivilegeInfo> GetTokenPrivileges(SafeNativeHandle hToken)
        {
            using (SafeMemoryBuffer tokenInfo = GetTokenInformation(hToken,
                                                                    NativeHelpers.TokenInformationClass.TokenPrivileges))
            {
                NativeHelpers.TOKEN_PRIVILEGES tokenPrivs = (NativeHelpers.TOKEN_PRIVILEGES)Marshal.PtrToStructure(
                    tokenInfo.DangerousGetHandle(),
                    typeof(NativeHelpers.TOKEN_PRIVILEGES));

                NativeHelpers.LUID_AND_ATTRIBUTES[] luidAttrs =
                    new NativeHelpers.LUID_AND_ATTRIBUTES[tokenPrivs.PrivilegeCount];
                PtrToStructureArray(luidAttrs, IntPtr.Add(tokenInfo.DangerousGetHandle(),
                                                          Marshal.SizeOf(tokenPrivs.PrivilegeCount)));

                return(luidAttrs.Select(la => new PrivilegeInfo(la)).ToList());
            }
        }
Ejemplo n.º 2
0
 internal PrivilegeInfo(NativeHelpers.LUID_AND_ATTRIBUTES la)
 {
     Name       = TokenUtil.GetPrivilegeName(la.Luid);
     Attributes = (PrivilegeAttributes)la.Attributes;
 }