I'm trying to list all users located in an Organizational Unit within a domain using LDAP (DirectorySearcher class).
The domain I'm connecting to isn't the current domain, and the OU I'm trying to look at is in a very deep path with some of the OU names repeated elsewhere, e.g.:
MyDomain.LOCAL/MyCompany/Clients/Contoso/Financial Site/Financial Services/Users
I'm able to list all users within the domain with the following code:
// Build the directory entry
var directoryEntry = new DirectoryEntry(_ldapServer, _domain + "\\" +
    _systemUser, _systemPassword);
try
{
    // Bind to the native AdsObject to force authentication of the system user.
    // It will throw an exception if this is an invalid account
    object obj = directoryEntry.NativeObject;
}
catch (Exception ex)
{
    throw new Exception("Error authenticating system user. " + ex.Message, ex);
}
// create a directory searcher for that OU  
DirectorySearcher users = new DirectorySearcher(directoryEntry);
// set the filter to get just the users
users.Filter = "(&(objectClass=user)(objectCategory=Person))";
// add the attributes you want to grab from the search
users.PropertiesToLoad.Add("givenName");
users.PropertiesToLoad.Add("sn");
users.PropertiesToLoad.Add("mail"); 
users.PropertiesToLoad.Add("name"); 
// grab the users and do whatever you need to do with them
var allFound = users.FindAll();
foreach (SearchResult oResult in allFound)
{
    // etc
}
This works, and grabs a huge list of all the users that are located in the root (domain).
However, I wish to get the users under the specific OU.
I have tried the following line:
var directoryEntry = new DirectoryEntry(_ldapServer +
    "/ou=MyCompany/Clients/Contoso/Financial Site/Financial Services/Users",
    _domain + "\\" + _systemUser, _systemPassword);
And I get the error:
Error authenticating system user. An operations error occurred.
Does anyone know how I be more specific in the DirectorySearcher for the OU I'm interested in?
SOLVED!
The final path string (for my example) should be the following (without the line-breaks):
LDAP://DomainControllerServer/OU=Users,OU=Financial Services,
    OU=Financial Site,OU=Contoso,OU=Clients,OU=MyCompany,
    DC=MyDomain,DC=LOCAL
DomainControllerServer = IP address in my case.
-- FQDN: MyDomain.LOCAL - Period-separated into DC={part} list
 |-- OU: MyCompany
   |-- OU: Clients
     |-- OU: Contoso
       |-- OU: Financial site
         |-- OU: Financial Services
           |-- OU: Users
Remember to escape invalid characters with a backslash (\), such as any of the following: + , \ = /.
This was a nightmare, but thankfully it works now.