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:
TODOSample 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