コード例 #1
0
        public static SamAliasHandle Create(SamAliasAccess access, SamDomainHandle domainHandle, string name, out int aliasId)
        {
            NtStatus      status;
            UnicodeString nameStr;
            IntPtr        handle;

            nameStr = new UnicodeString(name);

            try
            {
                if ((status = Win32.SamCreateAliasInDomain(
                         domainHandle,
                         ref nameStr,
                         access,
                         out handle,
                         out aliasId
                         )) >= NtStatus.Error)
                {
                    Win32.Throw(status);
                }
            }
            finally
            {
                nameStr.Dispose();
            }

            return(new SamAliasHandle(handle, true));
        }
コード例 #2
0
 public static SamUserHandle Open(Sid sid, SamUserAccess access)
 {
     using (var dhandle = new SamDomainHandle(sid.DomainName, SamDomainAccess.Lookup))
     {
         return(new SamUserHandle(dhandle, dhandle.LookupName(sid.Name), access));
     }
 }
コード例 #3
0
        /// <summary>
        /// Opens a SAM user.
        /// </summary>
        /// <param name="domainHandle">A handle to a SAM domain.</param>
        /// <param name="userId">The relative ID of the user to open.</param>
        /// <param name="access">The desired access to the user.</param>
        public SamUserHandle(SamDomainHandle domainHandle, int userId, SamUserAccess access)
        {
            IntPtr handle;

            Win32.SamOpenUser(
                domainHandle,
                access,
                userId,
                out handle
                ).ThrowIf();

            this.Handle = handle;
        }
コード例 #4
0
        /// <summary>
        /// Opens a SAM group.
        /// </summary>
        /// <param name="domainHandle">A handle to a SAM domain.</param>
        /// <param name="groupId">The relative ID of the group to open.</param>
        /// <param name="access">The desired access to the group.</param>
        public SamGroupHandle(SamDomainHandle domainHandle, int groupId, SamGroupAccess access)
        {
            IntPtr handle;

            Win32.SamOpenGroup(
                domainHandle,
                access,
                groupId,
                out handle
                ).ThrowIf();

            this.Handle = handle;
        }
コード例 #5
0
        /// <summary>
        /// Opens a SAM alias.
        /// </summary>
        /// <param name="domainHandle">A handle to a SAM domain.</param>
        /// <param name="aliasId">The relative ID of the alias to open.</param>
        /// <param name="access">The desired access to the alias.</param>
        public SamAliasHandle(SamDomainHandle domainHandle, int aliasId, SamAliasAccess access)
        {
            IntPtr handle;

            Win32.SamOpenAlias(
                domainHandle,
                access,
                aliasId,
                out handle
                ).ThrowIf();

            this.Handle = handle;
        }
コード例 #6
0
        /// <summary>
        /// Opens a SAM alias.
        /// </summary>
        /// <param name="domainHandle">A handle to a SAM domain.</param>
        /// <param name="aliasId">The relative ID of the alias to open.</param>
        /// <param name="access">The desired access to the alias.</param>
        public SamAliasHandle(SamDomainHandle domainHandle, int aliasId, SamAliasAccess access)
        {
            NtStatus status;
            IntPtr   handle;

            if ((status = Win32.SamOpenAlias(
                     domainHandle,
                     access,
                     aliasId,
                     out handle
                     )) >= NtStatus.Error)
            {
                Win32.Throw(status);
            }

            this.Handle = handle;
        }
コード例 #7
0
        /// <summary>
        /// Opens a SAM group.
        /// </summary>
        /// <param name="domainHandle">A handle to a SAM domain.</param>
        /// <param name="groupId">The relative ID of the group to open.</param>
        /// <param name="access">The desired access to the group.</param>
        public SamGroupHandle(SamDomainHandle domainHandle, int groupId, SamGroupAccess access)
        {
            NtStatus status;
            IntPtr   handle;

            if ((status = Win32.SamOpenGroup(
                     domainHandle,
                     access,
                     groupId,
                     out handle
                     )) >= NtStatus.Error)
            {
                Win32.Throw(status);
            }

            this.Handle = handle;
        }
コード例 #8
0
        /// <summary>
        /// Opens a SAM user.
        /// </summary>
        /// <param name="domainHandle">A handle to a SAM domain.</param>
        /// <param name="userId">The relative ID of the user to open.</param>
        /// <param name="access">The desired access to the user.</param>
        public SamUserHandle(SamDomainHandle domainHandle, int userId, SamUserAccess access)
        {
            NtStatus status;
            IntPtr   handle;

            if ((status = Win32.SamOpenUser(
                     domainHandle,
                     access,
                     userId,
                     out handle
                     )) >= NtStatus.Error)
            {
                Win32.Throw(status);
            }

            this.Handle = handle;
        }
コード例 #9
0
        public static SamUserHandle Create(SamUserAccess access, SamDomainHandle domainHandle, string name, out int userId)
        {
            IntPtr handle;

            UnicodeString nameStr = new UnicodeString(name);

            try
            {
                Win32.SamCreateUserInDomain(
                    domainHandle,
                    ref nameStr,
                    access,
                    out handle,
                    out userId
                    ).ThrowIf();
            }
            finally
            {
                nameStr.Dispose();
            }

            return(new SamUserHandle(handle, true));
        }
コード例 #10
0
        public SamUserInformation GetInformation()
        {
            using (var data = this.GetInformation(UserInformationClass.UserAllInformation))
            {
                UserAllInformation info = data.ReadStruct <UserAllInformation>();

                return(new SamUserInformation(
                           SamDomainHandle.ToDateTime(info.LastLogon),
                           SamDomainHandle.ToDateTime(info.LastLogoff),
                           SamDomainHandle.ToDateTime(info.PasswordLastSet),
                           SamDomainHandle.ToDateTime(info.AccountExpires),
                           SamDomainHandle.ToDateTime(info.PasswordCanChange),
                           SamDomainHandle.ToDateTime(info.PasswordMustChange),
                           info.UserName.Read(),
                           info.FullName.Read(),
                           info.AdminComment.Read(),
                           info.UserComment.Read(),
                           info.UserId,
                           info.PrimaryGroupId,
                           info.UserAccountControl,
                           info.PasswordExpired
                           ));
            }
        }
コード例 #11
0
 public SamUserHandle(SamDomainHandle domainHandle, string name, SamUserAccess access)
     : this(domainHandle, domainHandle.LookupName(name), access)
 {
 }