public static DomainControllerHelper FromStruct(NetApi32.DOMAIN_CONTROLLER_INFO dcInfo)
        {
            DomainControllerHelper ret = new DomainControllerHelper()
            {
                Name = dcInfo.DomainControllerName.Replace("\\\\", null), FromUDPPing = false
            };

            //ret.Load(UDPAttributes);

            return(ret);
        }
Example #2
0
        public static DCInfo DsGetDCName(string domainDNS, string siteName, NetApi32.DS_FLAGS flags)
        {
            DCInfo ret = new DCInfo()
            {
                Success = false
            };

            int    iret   = -1;
            IntPtr ipinfo = IntPtr.Zero;

            NetApi32.DOMAIN_CONTROLLER_INFO stcinfo = default(NetApi32.DOMAIN_CONTROLLER_INFO);

            if (domainDNS == null)
            {
                domainDNS = String.Empty;
            }

            try
            { iret = NetApi32.DsGetDcName(null, domainDNS, new Guid(), siteName, flags, ref ipinfo); }

            catch (Win32Exception Win32Ex)
            { ret.ErrorString = Win32Ex.ErrorCode + " (Win32: " + Win32Ex.Message + ")"; }

            catch (Exception ex)
            { ret.ErrorString = ex.Message; }


            if (iret == 0)
            {
                ret.Success = true;

                stcinfo = (NetApi32.DOMAIN_CONTROLLER_INFO)Marshal.PtrToStructure(ipinfo, typeof(NetApi32.DOMAIN_CONTROLLER_INFO));

                NetApi32.NetApiBufferFree(ipinfo);

                ReturnDCINFO(stcinfo, ref ret);
            }

            else
            {
                HandleError(iret, ref ret, domainDNS, siteName, flags.ToString());
            }

            return(ret);
        }
Example #3
0
        private static void ReturnDCINFO(NetApi32.DOMAIN_CONTROLLER_INFO DomainInfo, ref DCInfo dc)
        {
            dc.DCName    = DomainInfo.DomainControllerName.Replace("\\\\", null);
            dc.DCAddress = DomainInfo.DomainControllerAddress.Replace("\\\\", null);
            if (DomainInfo.DomainControllerAddressType == 1)
            {
                dc.IsIPAddress = true;
            }
            else
            {
                dc.IsNetBIOSAddress = true;
            }

            dc.DomainName     = DomainInfo.DomainName;
            dc.DomainGUID     = DomainInfo.DomainGuid;
            dc.DNSForestname  = DomainInfo.DnsForestName;
            dc.DCSiteName     = DomainInfo.DcSiteName;
            dc.ClientSiteName = DomainInfo.ClientSiteName;


            dc.IsPDC                    = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_PDC_FLAG);
            dc.IsGC                     = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_GC_FLAG);
            dc.IsLDAPServer             = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_LDAP_FLAG);
            dc.IsDC                     = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_DS_FLAG);
            dc.IsKDC                    = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_KDC_FLAG);
            dc.IsTimerServer            = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_TIMESERV_FLAG);
            dc.IsInClosestSite          = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_CLOSEST_FLAG);
            dc.IsWritable               = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_WRITABLE_FLAG);
            dc.IsGoodTimerServer        = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_GOOD_TIMESERV_FLAG);
            dc.IsNonDomainNC            = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_NDNC_FLAG);
            dc.HasSelectedSecrets       = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_SELECT_SECRET_DOMAIN_6_FLAG);
            dc.HasAllSecrets            = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_FULL_SECRET_DOMAIN_6_FLAG);
            dc.HasWebService            = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_WS_FLAG);
            dc.IsDirectoryService2012   = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_DS_8_FLAG);
            dc.IsDirectoryService2012R2 = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_DS_9_FLAG);
            //dc.FromPing = CBool(DomainInfo.Flags And NetApi32.DS_RETURNED_FLAGS.DS_PING_FLAG)
            dc.DCIsDNSName     = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_DNS_CONTROLLER_FLAG);
            dc.DomainIsDNSName = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_DNS_DOMAIN_FLAG);
            //dc.ForestIsDNSName = Convert.ToBoolean(DomainInfo.Flags & NetApi32.DS_RETURNED_FLAGS.DS_DNS_FOREST_FLAG);

            dc.NCInfo = new NamingContextsInfo(dc.DCName);
        }