示例#1
0
 internal LsaTrustedDomain(SafeLsaHandle handle, LsaTrustedDomainAccessRights granted_access, string name, Sid sid, LsaTrustedDomainInformation domain_info, string system_name)
     : base(handle, granted_access, LsaPolicyUtils.LSA_TRUSTED_DOMAIN_NT_TYPE_NAME, $"LSA Trusted Domain ({(name ?? domain_info.Name)})", system_name)
 {
     _domain_info = domain_info;
     Sid          = sid ?? domain_info.Sid;
     Name         = name ?? domain_info.Name;
 }
        /// <summary>
        /// Open trusted domain object.
        /// </summary>
        /// <param name="name">The name of the trusted domain.</param>
        /// <param name="desired_access">The desired access for the object.</param>
        /// <param name="throw_on_error">True to throw on error.</param>
        /// <returns>The trusted domain object.</returns>
        public NtResult <LsaTrustedDomain> OpenTrustedDomain(string name, LsaTrustedDomainAccessRights desired_access, bool throw_on_error)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException($"'{nameof(name)}' cannot be null or empty.", nameof(name));
            }

            return(OpenTrustedDomain(name, null, desired_access, throw_on_error));
        }
        /// <summary>
        /// Open trusted domain object.
        /// </summary>
        /// <param name="sid">The SID of the trusted domain.</param>
        /// <param name="desired_access">The desired access for the object.</param>
        /// <param name="throw_on_error">True to throw on error.</param>
        /// <returns>The trusted domain object.</returns>
        public NtResult <LsaTrustedDomain> OpenTrustedDomain(Sid sid, LsaTrustedDomainAccessRights desired_access, bool throw_on_error)
        {
            if (sid is null)
            {
                throw new ArgumentNullException(nameof(sid));
            }

            using (var sid_buffer = sid.ToSafeBuffer())
            {
                return(SecurityNativeMethods.LsaOpenTrustedDomain(Handle, sid_buffer,
                                                                  desired_access, out SafeLsaHandle handle).CreateResult(throw_on_error,
                                                                                                                         () => new LsaTrustedDomain(handle, desired_access, null, sid, QueryDomainInfo(sid_buffer), SystemName)));
            }
        }
示例#4
0
 internal static extern NtStatus LsaOpenTrustedDomainByName(
     SafeLsaHandle PolicyHandle,
     UnicodeString TrustedDomainName,
     LsaTrustedDomainAccessRights DesiredAccess,
     out SafeLsaHandle TrustedDomainHandle
     );
示例#5
0
 internal static extern NtStatus LsaOpenTrustedDomain(
     SafeLsaHandle PolicyHandle,
     SafeSidBufferHandle TrustedDomainSid,
     LsaTrustedDomainAccessRights DesiredAccess,
     out SafeLsaHandle TrustedDomainHandle
     );
 /// <summary>
 /// Enumerate and open accessible trusted domain objects in policy.
 /// </summary>
 /// <param name="desired_access">The desired access for the opened trusted domains.</param>
 /// <returns>The list of accessible trusted domains.</returns>
 public IReadOnlyList <LsaTrustedDomain> OpenAccessibleTrustedDomains(LsaTrustedDomainAccessRights desired_access)
 {
     return(OpenAccessibleTrustedDomains(desired_access, true).Result);
 }
 /// <summary>
 /// Enumerate and open accessible trusted domain objects in policy.
 /// </summary>
 /// <param name="desired_access">The desired access for the opened trusted domains.</param>
 /// <param name="throw_on_error">True to throw on error.</param>
 /// <returns>The list of accessible trusted domains.</returns>
 public NtResult <IReadOnlyList <LsaTrustedDomain> > OpenAccessibleTrustedDomains(LsaTrustedDomainAccessRights desired_access, bool throw_on_error)
 {
     return(EnumerateTrustedDomains(throw_on_error).Map <IReadOnlyList <LsaTrustedDomain> >(e => e.Select(
                                                                                                s => OpenTrustedDomain(s.Name, s, desired_access, false).GetResultOrDefault()).Where(a => a != null).ToList().AsReadOnly()));
 }
 /// <summary>
 /// Open trusted domain object.
 /// </summary>
 /// <param name="name">The name of the trusted domain.</param>
 /// <param name="desired_access">The desired access for the object.</param>
 /// <returns>The trusted domain object.</returns>
 public LsaTrustedDomain OpenTrustedDomain(string name, LsaTrustedDomainAccessRights desired_access)
 {
     return(OpenTrustedDomain(name, desired_access, true).Result);
 }
 /// <summary>
 /// Open trusted domain object.
 /// </summary>
 /// <param name="sid">The SID of the trusted domain.</param>
 /// <param name="desired_access">The desired access for the object.</param>
 /// <returns>The trusted domain object.</returns>
 public LsaTrustedDomain OpenTrustedDomain(Sid sid, LsaTrustedDomainAccessRights desired_access)
 {
     return(OpenTrustedDomain(sid, desired_access, true).Result);
 }
 private NtResult <LsaTrustedDomain> OpenTrustedDomain(string name, LsaTrustedDomainInformation?domain_info, LsaTrustedDomainAccessRights desired_access, bool throw_on_error)
 {
     return(SecurityNativeMethods.LsaOpenTrustedDomainByName(Handle, new UnicodeString(name),
                                                             desired_access, out SafeLsaHandle handle).CreateResult(throw_on_error,
                                                                                                                    () => new LsaTrustedDomain(handle, desired_access, name, null, domain_info ?? QueryDomainInfo(name), SystemName)));
 }