Beispiel #1
0
 internal static extern NtStatus SamLookupNamesInDomain(
     SafeSamHandle DomainHandle,
     int Count,
     [In] UnicodeStringIn[] Names,
     out SafeSamMemoryBuffer RelativeIds, // PULONG
     out SafeSamMemoryBuffer Use          // PSID_NAME_USE
     );
Beispiel #2
0
 internal static extern NtStatus SamLookupIdsInDomain(
     SafeSamHandle DomainHandle,
     int Count,
     uint[] RelativeIds,
     out SafeSamMemoryBuffer Names, // PUNICODE_STRING
     out SafeSamMemoryBuffer Use    // PSID_NAME_USE
     );
Beispiel #3
0
 internal static extern NtStatus SamGetAliasMembership(
     SafeSamHandle DomainHandle,
     int PassedCount,
     IntPtr[] Sids,                  // PSID
     out int MembershipCount,
     out SafeSamMemoryBuffer Aliases // PULONG
     );
Beispiel #4
0
 internal static extern NtStatus SamEnumerateDomainsInSamServer(
     SafeSamHandle ServerHandle,
     ref int EnumerationContext,
     out SafeSamMemoryBuffer Buffer,
     int PreferedMaximumLength,
     out int CountReturned
     );
Beispiel #5
0
 internal static extern NtStatus SamEnumerateAliasesInDomain(
     SafeSamHandle DomainHandle,
     ref int EnumerationContext,
     out SafeSamMemoryBuffer Buffer, // PSAM_RID_ENUMERATION
     int PreferedMaximumLength,
     out int CountReturned
     );
Beispiel #6
0
 internal static extern NtStatus SamEnumerateUsersInDomain(
     SafeSamHandle DomainHandle,
     ref int EnumerationContext,
     UserAccountControlFlags UserAccountControl,
     out SafeSamMemoryBuffer Buffer, // PSAM_RID_ENUMERATION *
     int PreferedMaximumLength,
     out int CountReturned
     );
Beispiel #7
0
 IReadOnlyList <Sid> ConvertMembers(SafeSamMemoryBuffer members, int count)
 {
     using (members)
     {
         members.Initialize <IntPtr>((uint)count);
         IntPtr[] sids = members.ReadArray <IntPtr>(0, count);
         return(sids.Select(ptr => new Sid(ptr)).ToList().AsReadOnly());
     }
 }
        private static IReadOnlyList <SamGroupMember> ConvertMembers(SafeSamMemoryBuffer rids, SafeSamMemoryBuffer attrs, int count)
        {
            using (SafeBuffer a = rids, b = attrs)
            {
                rids.Initialize <uint>((uint)count);
                attrs.Initialize <uint>((uint)count);

                uint[] rid_array  = rids.ReadArray <uint>(0, count);
                uint[] attr_array = attrs.ReadArray <uint>(0, count);

                return(rid_array.Select((r, i) => new SamGroupMember(r, attr_array[i])).ToList().AsReadOnly());
            }
        }
        private IReadOnlyList <SidName> MapNames(string[] names, SafeSamMemoryBuffer rid_buffer, SafeSamMemoryBuffer use_buffer)
        {
            using (rid_buffer)
            {
                using (use_buffer)
                {
                    rid_buffer.Initialize <uint>((uint)names.Length);
                    use_buffer.Initialize <int>((uint)names.Length);
                    uint[] rids = rid_buffer.ReadArray <uint>(0, names.Length);
                    int[]  use  = use_buffer.ReadArray <int>(0, names.Length);

                    return(names.Select((n, i) => new SidName(DomainId.CreateRelative(rids[i]),
                                                              Name, n.ToString(), SidNameSource.Account, (SidNameUse)use[i], false))
                           .Where(n => n.NameUse != SidNameUse.Unknown).ToList().AsReadOnly());
                }
            }
        }
Beispiel #10
0
 internal static extern NtStatus SamRidToSid(
     SafeSamHandle ObjectHandle,
     uint Rid,
     out SafeSamMemoryBuffer Sid
     );
Beispiel #11
0
 internal static extern NtStatus SamLookupDomainInSamServer(
     SafeSamHandle ServerHandle,
     UnicodeString Name,
     out SafeSamMemoryBuffer DomainId
     );
Beispiel #12
0
 internal static extern NtStatus SamQueryInformationGroup(
     SafeSamHandle GroupHandle,
     GROUP_INFORMATION_CLASS GroupInformationClass,
     out SafeSamMemoryBuffer Buffer
     );
Beispiel #13
0
 internal static extern NtStatus SamQueryInformationUser(
     SafeSamHandle UserHandle,
     UserInformationClass UserInformationClass,
     out SafeSamMemoryBuffer Buffer
     );
Beispiel #14
0
 internal static extern NtStatus SamGetMembersInAlias(
     SafeSamHandle AliasHandle,
     out SafeSamMemoryBuffer MemberIds, // PSID **
     out int MemberCount
     );
Beispiel #15
0
 internal static extern NtStatus SamGetMembersInGroup(
     SafeSamHandle GroupHandle,
     out SafeSamMemoryBuffer MemberIds,  // PULONG *
     out SafeSamMemoryBuffer Attributes, // PULONG *
     out int MemberCount
     );
Beispiel #16
0
 internal static extern NtStatus SamGetGroupsForUser(
     SafeSamHandle UserHandle,
     out SafeSamMemoryBuffer Groups, // PGROUP_MEMBERSHIP
     out int MembershipCount
     );
Beispiel #17
0
 internal static extern NtStatus SamQueryInformationDomain(
     SafeSamHandle DomainHandle,
     DomainInformationClass DomainInformationClass,
     out SafeSamMemoryBuffer Buffer
     );
Beispiel #18
0
 internal static extern NtStatus SamQuerySecurityObject(
     SafeSamHandle ObjectHandle,
     SecurityInformation SecurityInformation,
     out SafeSamMemoryBuffer SecurityDescriptor
     );