示例#1
0
 public SamUserInformation(
     DateTime lastLogon,
     DateTime lastLogoff,
     DateTime passwordLastSet,
     DateTime accountExpires,
     DateTime passwordCanChange,
     DateTime passwordMustChange,
     string userName,
     string fullName,
     string adminComment,
     string userComment,
     int userId,
     int primaryGroupId,
     UserAccountFlags userFlags,
     bool passwordExpired
     )
 {
     _lastLogon          = lastLogon;
     _lastLogoff         = lastLogoff;
     _passwordLastSet    = passwordLastSet;
     _accountExpires     = accountExpires;
     _passwordCanChange  = passwordCanChange;
     _passwordMustChange = passwordMustChange;
     _userName           = userName;
     _fullName           = fullName;
     _adminComment       = adminComment;
     _userComment        = userComment;
     _userId             = userId;
     _primaryGroupId     = primaryGroupId;
     _userFlags          = userFlags;
     _passwordExpired    = passwordExpired;
 }
 public static extern NtStatus SamEnumerateUsersInDomain(
     [In] IntPtr DomainHandle,
     ref int EnumerationContext,
     [In] UserAccountFlags UserAccountControl,
     [Out] out IntPtr Buffer, // SamRidEnumeration**
     [In] int PreferredMaximumLength,
     [Out] out int CountReturned
     );
 public static extern NtStatus SamCreateUser2InDomain(
     [In] IntPtr DomainHandle,
     [In] ref UnicodeString AccountName,
     [In] UserAccountFlags AccountType,
     [In] SamUserAccess DesiredAccess,
     [Out] out IntPtr UserHandle,
     [Out] out SamUserAccess GrantedAccess,
     [Out] out int RelativeId
     );
示例#4
0
        public unsafe void SetFlags(UserAccountFlags flags)
        {
            UserAllInformation info = new UserAllInformation
            {
                WhichFields        = UserWhichFields.UserAccountControl,
                UserAccountControl = flags
            };

            this.SetInformation(UserInformationClass.UserAllInformation, new IntPtr(&info));
        }
示例#5
0
        public void SetFlags(UserAccountFlags flags)
        {
            unsafe
            {
                UserAllInformation info = new UserAllInformation();

                info.WhichFields        = UserWhichFields.UserAccountControl;
                info.UserAccountControl = flags;

                this.SetInformation(UserInformationClass.UserAllInformation, new IntPtr(&info));
            }
        }
        public void EnumUsers(EnumUsersDelegate callback, UserAccountFlags flags)
        {
            NtStatus status;
            int      enumerationContext = 0;
            IntPtr   buffer;
            int      count;

            while (true)
            {
                status = Win32.SamEnumerateUsersInDomain(
                    this,
                    ref enumerationContext,
                    flags,
                    out buffer,
                    0x100,
                    out count
                    );

                if (status >= NtStatus.Error)
                {
                    Win32.Throw(status);
                }
                if (count == 0)
                {
                    break;
                }

                using (var bufferAlloc = new SamMemoryAlloc(buffer))
                {
                    for (int i = 0; i < count; i++)
                    {
                        var data = bufferAlloc.ReadStruct <SamRidEnumeration>(i);

                        if (!callback(data.Name.Read(), data.RelativeId))
                        {
                            return;
                        }
                    }
                }
            }
        }
        public void EnumUsers(EnumUsersDelegate callback, UserAccountFlags flags)
        {
            int    enumerationContext = 0;
            IntPtr buffer;
            int    count;

            while (true)
            {
                Win32.SamEnumerateUsersInDomain(
                    this,
                    ref enumerationContext,
                    flags,
                    out buffer,
                    0x100,
                    out count
                    ).ThrowIf();

                if (count == 0)
                {
                    break;
                }

                using (SamMemoryAlloc bufferAlloc = new SamMemoryAlloc(buffer))
                {
                    for (int i = 0; i < count; i++)
                    {
                        var data = bufferAlloc.ReadStruct <SamRidEnumeration>(0, SamRidEnumeration.SizeOf, i);

                        if (!callback(data.Name.Text, data.RelativeId))
                        {
                            return;
                        }
                    }
                }
            }
        }
 public AccountFlagsMessage(UserAccountFlags flags) : base(MessageType.AccountFlags)
 {
     Flags = flags;
 }