Example #1
0
 public static extern int DsGetDcName(
     [MarshalAs(UnmanagedType.LPTStr)] string ComputerName,
     [MarshalAs(UnmanagedType.LPTStr)] string DomainName,
     [In] int DomainGuid,
     [MarshalAs(UnmanagedType.LPTStr)] string SiteName,
     [MarshalAs(UnmanagedType.U4)] DSGETDCNAME_FLAGS flags,
     out IntPtr pDOMAIN_CONTROLLER_INFO);
Example #2
0
 private static extern int DsGetDcNameUnix
 (
     string ComputerName,
     string DomainName,
     [In] IntPtr DomainGuid,
     string SiteName,
     DSGETDCNAME_FLAGS Flags,
     out IntPtr pDOMAIN_CONTROLLER_INFO
 );
Example #3
0
 internal static extern int DsGetDcName
 (
     [MarshalAs(UnmanagedType.LPWStr)]
     string ComputerName,
     [MarshalAs(UnmanagedType.LPWStr)]
     string DomainName,
     [In] IntPtr DomainGuid,
     [MarshalAs(UnmanagedType.LPWStr)]
     string SiteName,
     DSGETDCNAME_FLAGS Flags,
     out IntPtr pDOMAIN_CONTROLLER_INFO
 );
Example #4
0
        bool LocateSomething(string intput, out string domain, out string forest, DSGETDCNAME_FLAGS flag)
        {
            IntPtr DomainInfoResolution;

            domain = null;
            forest = null;
            Trace.WriteLine("Trying to solve " + intput + "(" + DateTime.Now.ToString("u") + ")");

            int ret;

            if (platform != PlatformID.Win32NT)
            {
                ret = DsGetDcNameUnix(Server, intput, IntPtr.Zero, null, flag, out DomainInfoResolution);
            }
            else
            {
                ret = DsGetDcName(Server, intput, IntPtr.Zero, null, flag, out DomainInfoResolution);
            }
            if (ret == 0)
            {
                Trace.WriteLine("DsGetDcName for " + intput + " succeeded (" + DateTime.Now.ToString("u") + ")");
                DOMAIN_CONTROLLER_INFO di = (DOMAIN_CONTROLLER_INFO)Marshal.PtrToStructure(DomainInfoResolution, typeof(DOMAIN_CONTROLLER_INFO));
                domain = di.DomainName.ToLowerInvariant();
                forest = di.DnsForestName.ToLowerInvariant();
                NetApiBufferFree(DomainInfoResolution);
                return(true);
            }
            else if (ret == 0x0000054B)
            {
                Trace.WriteLine("DsGetDcName for " + intput + " domain not found (" + DateTime.Now.ToString("u") + ")");
            }
            else
            {
                Trace.WriteLine("DsGetDcName for " + intput + " failed 0x" + ret.ToString("x") + " (" + DateTime.Now.ToString("u") + ")");
            }
            return(false);
        }