title: Creating user in a specific OU in Active Directory using C#
body: <p>Many thanks to marc_s for the following code sample, from my previous issue <a href="https://stackoverflow.com/questions/8684059/creating-user-in-active-directory-with-c-sharp-errors">Creating user in Active Directory with C# errors</a> </p>
  
  <pre><code>public static string ldapPath = "LDAP://OU=Domain Users,DC=contoso,DC=com";
  public static string CreateUserAccount(string userName, string userPassword)
  {
      // set up domain context
      PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "contoso.com",ldapPath);
  
      // create a user principal object
      UserPrincipal user = new UserPrincipal(ctx, userName, userPassword, true);
  
      // assign some properties to the user principal
      user.GivenName = "User";
      user.Surname = "One";
  
      // force the user to change password at next logon
      user.ExpirePasswordNow();
  
      // save the user to the directory
      user.Save();
  
      return user.SamAccountName;
  }
  </code></pre>
  
  <p>Now I'm trying to get the user account into a specific OU. Keeping the ldapPath in the PrincipalContext errors</p>
  
  <pre><code>System.DirectoryServices.AccountManagement.PrincipalOperationException: Unknown error (0x80005000) ---&gt; System.Runtime.InteropServices.COMException (0x80005000): Unknown error (0x80005000)
     at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
     at System.DirectoryServices.DirectoryEntry.Bind()
     at System.DirectoryServices.DirectoryEntry.get_SchemaEntry()
     at System.DirectoryServices.AccountManagement.ADStoreCtx.IsContainer(DirectoryEntry de)
     at System.DirectoryServices.AccountManagement.ADStoreCtx..ctor(DirectoryEntry ctxBase, Boolean ownCtxBase, String username, String password, ContextOptions options)
     at System.DirectoryServices.AccountManagement.PrincipalContext.CreateContextFromDirectoryEntry(DirectoryEntry entry)
     at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()
     --- End of inner exception stack trace ---
     at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()
     at System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()
     at System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()
     at System.DirectoryServices.AccountManagement.PrincipalContext.ContextForType(Type t)
     at System.DirectoryServices.AccountManagement.Principal.GetStoreCtxToUse()
     at System.DirectoryServices.AccountManagement.Principal.set_SamAccountName(String value)
     at System.DirectoryServices.AccountManagement.UserPrincipal..ctor(PrincipalContext context, String samAccountName, String password, Boolean enabled)
     at ADINtegrationTest.ActiveDirectory.CreateUserAccount(String userName, String userPassword) in D:\_data\ADINtegrationTest\ADINtegrationTest\ActiveDirectoryUtils.cs:line 20
     at ADINtegrationTest.Form1.Form1_Load(Object sender, EventArgs e) in D:\_data\ADINtegrationTest\ADINtegrationTest\Form1.cs:line 32
  </code></pre>
  
  <p>And if i remove the ldapPath, it works fine, but throws the user account into the Users OU. I also tried the ldapPath like LDAP://contoso.com/OU=Domain Users,DC=contoso,DC=com, which didn't work.</p>