DsGetDomainControllerInfo

C# Signature:

[DllImport("ntdsapi.dll", CharSet = CharSet.Auto)]
public static extern uint DsGetDomainControllerInfo(
     IntPtr hDs, 
     string DomainName, 
     uint InfoLevel, 
     out uint InfoCount, 
     out IntPtr pInf
);

VB Signature:

TODO

Sample Code:

using System;
    using System.Runtime.InteropServices;

    class NtdsHelper
    {
    [DllImport("ntdsapi.dll", CharSet = CharSet.Auto)]
    static public extern uint DsBind(
        string DomainControllerName, 
        string DnsDomainName, out IntPtr phDS
    );

    [DllImport("ntdsapi.dll", CharSet = CharSet.Auto)]
    static public extern uint DsUnBind(ref IntPtr phDS);

    [StructLayout(LayoutKind.Sequential)]
    public struct GUID
    {
        public int a;
        public short b;
        public short c;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
        public byte[] d;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
    public struct DS_DOMAIN_CONTROLLER_INFO_2
    {
        [MarshalAs(UnmanagedType.LPTStr)]
        public string NetbiosName;        // SDBAD10004
        [MarshalAs(UnmanagedType.LPTStr)]
        public string DnsHostName;        // sdbad10004.dom1.ad.sys
        [MarshalAs(UnmanagedType.LPTStr)]
        public string SiteName;           // BAD1
        [MarshalAs(UnmanagedType.LPTStr)]
        public string SiteObjectName;     // CN=BAD1,CN=Sites,CN=Configuration,DC=ad,DC=sys
        [MarshalAs(UnmanagedType.LPTStr)]
        public string ComputerObjectName;     // CN=SDBAD10004,OU=Domain Controllers,DC=dom1,DC=ad,DC=sys
        [MarshalAs(UnmanagedType.LPTStr)]
        public string ServerObjectName;       // CN=SDBAD10004,CN=Servers,CN=BAD1,CN=Sites,CN=Configuration,DC=ad,DC=sys   
        [MarshalAs(UnmanagedType.LPTStr)]
        public string NtdsDsaObjectName;      // CN=NTDS Settings,CN=SDBAD10004,CN=Servers,CN=BAD1,CN=Sites,CN=Configuration,DC=ad,DC=sys
        [MarshalAs(UnmanagedType.Bool)]
        public bool fIsPdc;
        [MarshalAs(UnmanagedType.Bool)]
        public bool fDsEnabled;
        [MarshalAs(UnmanagedType.Bool)]
        public bool fIsGc;
        public GUID SiteObjectGuid;
        public GUID ComputerObjectGuid;
        public GUID ServerObjectGuid;
        public GUID NtdsDsaObjectGuid;
    }

    [DllImport("ntdsapi.dll", CharSet = CharSet.Auto)]
    public static extern uint DsGetDomainControllerInfo(
        IntPtr hDs, 
        string DomainName, 
        uint InfoLevel, 
        out uint InfoCount, 
        out IntPtr pInf);

    [DllImport("ntdsapi.dll", CharSet = CharSet.Auto)]
    public static extern void DsFreeDomainControllerInfo(
        uint InfoLevel, 
        uint cInfo, 
        IntPtr pInf);

    }

Sample Code:

Última actualización