views:

2738

answers:

3

Hi All,

I want to How I can get Domain Controller IP address programatically using C#, anyone tried that?

Thanks

+1  A: 

Well here is the general workflow of how to get it as described at the MS site:

http://support.microsoft.com/kb/247811

Here is the link from PInvoke.net to call the referenced DsGetDcName function:

http://pinvoke.net/default.aspx/netapi32/DsGetDcName.html

You could go down and dirty and do a raw DNS A Record query as described in the first link, but I think the PInvoke call should do the trick.

Hope that helps,

Mike

mjmarsh
Haven't tried it in C#, but in Java it's real easy to go the DNS A record route.
Brian Knoblauch
+3  A: 

Here's how I would do it.

You'll need to use System.Net and System.DirectoryServices.

// get root of the directory data tree on a directory server
DirectoryEntry dirEntry = new DirectoryEntry("LDAP://rootDSE");
// get the hostname of the directory server of your root (I'm assuming that's what you want)
string dnsHostname = dirEntry.Properties["dnsHostname"].Value.ToString();
IPAddress[] ipAddresses = Dns.GetHostAddresses(dnsHostname);
barneytron
+1  A: 

Thanks All,

I done it as in this code

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.DirectoryServices.AccountManagement;
    using System.DirectoryServices.ActiveDirectory;
public doIt()
        {
            DirectoryContext mycontext = new=DirectoryContext(DirectoryContextType.Domain,"project.local");
            DomainController dc = DomainController.FindOne(mycontext);
            IPAddress DCIPAdress = IPAddress.Parse(dc.IPAddress);
        }

Thanks again

netseng