Пример #1
0
 internal static extern NtStatus SamEnumerateAliasesInDomain(
     SafeSamHandle DomainHandle,
     ref int EnumerationContext,
     out SafeSamMemoryBuffer Buffer, // PSAM_RID_ENUMERATION
     int PreferedMaximumLength,
     out int CountReturned
     );
Пример #2
0
 internal static extern NtStatus SamGetAliasMembership(
     SafeSamHandle DomainHandle,
     int PassedCount,
     IntPtr[] Sids,                  // PSID
     out int MembershipCount,
     out SafeSamMemoryBuffer Aliases // PULONG
     );
Пример #3
0
 internal static extern NtStatus SamEnumerateDomainsInSamServer(
     SafeSamHandle ServerHandle,
     ref int EnumerationContext,
     out SafeSamMemoryBuffer Buffer,
     int PreferedMaximumLength,
     out int CountReturned
     );
Пример #4
0
 internal static extern NtStatus SamLookupIdsInDomain(
     SafeSamHandle DomainHandle,
     int Count,
     uint[] RelativeIds,
     out SafeSamMemoryBuffer Names, // PUNICODE_STRING
     out SafeSamMemoryBuffer Use    // PSID_NAME_USE
     );
Пример #5
0
 internal static extern NtStatus SamLookupNamesInDomain(
     SafeSamHandle DomainHandle,
     int Count,
     [In] UnicodeStringIn[] Names,
     out SafeSamMemoryBuffer RelativeIds, // PULONG
     out SafeSamMemoryBuffer Use          // PSID_NAME_USE
     );
Пример #6
0
 internal static extern NtStatus SamCreateGroupInDomain(
     SafeSamHandle DomainHandle,
     UnicodeString Name,
     SamGroupAccessRights DesiredAccess,
     out SafeSamHandle GroupHandle,
     out uint RelativeId
     );
Пример #7
0
 internal static extern NtStatus SamEnumerateUsersInDomain(
     SafeSamHandle DomainHandle,
     ref int EnumerationContext,
     UserAccountControlFlags UserAccountControl,
     out SafeSamMemoryBuffer Buffer, // PSAM_RID_ENUMERATION *
     int PreferedMaximumLength,
     out int CountReturned
     );
Пример #8
0
 public void ReleaseHandle()
 {
     if (this.Handle != null)
     {
         this.Handle.Dispose();
         this.Handle = null;
     }
 }
 private protected SamObject(SafeSamHandle handle, AccessMask granted_access, string type_name, string object_name, string server_name)
 {
     _handle         = handle;
     _granted_access = granted_access;
     NtType          = NtType.GetTypeByName(type_name);
     ObjectName      = object_name;
     ServerName      = server_name;
 }
 internal SamDomain(SafeSamHandle handle, SamDomainAccessRights granted_access, string server_name, string domain_name, Sid domain_sid)
     : base(handle, granted_access, SamUtils.SAM_DOMAIN_NT_TYPE_NAME, $"SAM Domain ({domain_name ?? domain_sid.ToString()})", server_name)
 {
     DomainId = domain_sid;
     if (domain_name != null)
     {
         _name = new Lazy <string>(() => domain_name);
     }
     else
     {
         _name = new Lazy <string>(() => string.Empty);
     }
 }
        private SamUser CreateUserObject(SafeSamHandle user_handle, SamUserAccessRights desired_access, string name, uint user_id)
        {
            try
            {
                Sid sid = RidToSid(user_id, false).GetResultOrDefault();
                if (sid == null)
                {
                    sid = DomainId.CreateRelative(user_id);
                }

                if (name == null)
                {
                    name = LookupId(user_id, false).GetResultOrDefault()?.Name ?? sid.ToString();
                }

                return(new SamUser(user_handle, desired_access, ServerName, name, sid));
            }
            catch
            {
                user_handle.Dispose();
                throw;
            }
        }
        private T CreateObject <T>(SafeSamHandle handle, uint user_id, string name, Func <string, Sid, T> func)
        {
            try
            {
                Sid sid = RidToSid(user_id, false).GetResultOrDefault();
                if (sid == null)
                {
                    sid = DomainId.CreateRelative(user_id);
                }

                if (name == null)
                {
                    name = LookupId(user_id, false).GetResultOrDefault()?.Name ?? sid.ToString();
                }

                return(func(name, sid));
            }
            catch
            {
                handle.Dispose();
                throw;
            }
        }
Пример #13
0
 internal static extern NtStatus SamOpenAlias(
     SafeSamHandle DomainHandle,
     SamAliasAccessRights DesiredAccess,
     uint AliasId,
     out SafeSamHandle AliasHandle
     );
Пример #14
0
 internal static extern NtStatus SamGetMembersInGroup(
     SafeSamHandle GroupHandle,
     out SafeSamMemoryBuffer MemberIds,  // PULONG *
     out SafeSamMemoryBuffer Attributes, // PULONG *
     out int MemberCount
     );
Пример #15
0
 internal static extern NtStatus SamOpenDomain(
     SafeSamHandle ServerHandle,
     SamDomainAccessRights DesiredAccess,
     SafeSidBufferHandle DomainId,
     out SafeSamHandle DomainHandle
     );
Пример #16
0
 internal static extern NtStatus SamRidToSid(
     SafeSamHandle ObjectHandle,
     uint Rid,
     out SafeSamMemoryBuffer Sid
     );
Пример #17
0
 internal static extern NtStatus SamLookupDomainInSamServer(
     SafeSamHandle ServerHandle,
     UnicodeString Name,
     out SafeSamMemoryBuffer DomainId
     );
Пример #18
0
 internal static extern NtStatus SamGetMembersInAlias(
     SafeSamHandle AliasHandle,
     out SafeSamMemoryBuffer MemberIds, // PSID **
     out int MemberCount
     );
Пример #19
0
 internal static extern NtStatus SamChangePasswordUser(
     SafeSamHandle UserHandle,
     UnicodeStringSecure OldPassword,
     UnicodeStringSecure NewPassword
     );
Пример #20
0
 internal static extern NtStatus SamSetSecurityObject(
     SafeSamHandle ObjectHandle,
     SecurityInformation SecurityInformation,
     SafeBuffer SecurityDescriptor
     );
Пример #21
0
 internal static extern NtStatus SamConnect(
     UnicodeString ServerName,
     out SafeSamHandle ServerHandle,
     AccessMask DesiredAccess,
     ObjectAttributes ObjectAttributes
     );
Пример #22
0
 internal static extern NtStatus SamDeleteGroup(
     SafeSamHandle GroupHandle
     );
Пример #23
0
 internal static extern NtStatus SamOpenUser(
     SafeSamHandle DomainHandle,
     SamUserAccessRights DesiredAccess,
     uint UserId,
     out SafeSamHandle UserHandle
     );
Пример #24
0
 internal static extern NtStatus SamQueryInformationUser(
     SafeSamHandle UserHandle,
     UserInformationClass UserInformationClass,
     out SafeSamMemoryBuffer Buffer
     );
Пример #25
0
 internal static extern NtStatus SamOpenGroup(
     SafeSamHandle DomainHandle,
     SamGroupAccessRights DesiredAccess,
     uint GroupId,
     out SafeSamHandle GroupHandle
     );
Пример #26
0
 internal static extern NtStatus SamQuerySecurityObject(
     SafeSamHandle ObjectHandle,
     SecurityInformation SecurityInformation,
     out SafeSamMemoryBuffer SecurityDescriptor
     );
Пример #27
0
 internal static extern NtStatus SamQueryInformationGroup(
     SafeSamHandle GroupHandle,
     GROUP_INFORMATION_CLASS GroupInformationClass,
     out SafeSamMemoryBuffer Buffer
     );
Пример #28
0
 internal static extern NtStatus SamSetInformationUser(
     SafeSamHandle UserHandle,
     UserInformationClass UserInformationClass,
     SafeBuffer Buffer
     );
Пример #29
0
 internal static extern NtStatus SamQueryInformationDomain(
     SafeSamHandle DomainHandle,
     DomainInformationClass DomainInformationClass,
     out SafeSamMemoryBuffer Buffer
     );
Пример #30
0
 internal static extern NtStatus SamSetInformationGroup(
     SafeSamHandle GroupHandle,
     GROUP_INFORMATION_CLASS GroupInformationClass,
     SafeBuffer Buffer
     );