2010-05-22 55 views
1

我試圖將新對象添加到Active Directory中的現有組織單位。以下代碼用於執行此操作。無法在ActiveDirectory中創建新對象

它運行沒有錯誤。但新的對象不是在此之後創建的。請告知我在這裏做錯了什麼。

using System.DirectoryServices; 
using System.DirectoryServices.ActiveDirectory; 

namespace TestAdObjectCreation 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DirectoryEntry root = new DirectoryEntry("LDAP://servername/OU=Services,OU=PCX,DC=q2q,DC=xenyq,DC=com", "Administrator", "pass"); 
      DirectoryEntry newItem = root.Children.Add("test_node", "valid_schema_class_name"); 
      root.CommitChanges(); 
      root.Close(); 
      root.Dispose(); 
     } 
    } 
} 
+1

何浩!最後我得到了它!我在根節點上調用CommitChanges,假定提交將傳播到整個子樹。但它轉向CommitChanges應單獨調用每個元素。 – Humanier 2010-05-22 14:54:28

回答

0

你試圖創建什麼樣的對象?

首先,所有LDAP對象始終都有一個前綴,域名組件爲DC=,組織單位爲OU=,通用名稱爲CN=。另外,許多LDAP對象對它們需要考慮的有效性的要求最低,例如用戶或組必須具有唯一的samAccountName。

所以再次 - 你想創建什麼?

如果你將創建代碼封裝到try..catch中 - 你會得到任何異常嗎?如果是這樣 - 他們是什麼?

static void Main(string[] args) 
{ 
    DirectoryEntry root = new DirectoryEntry("LDAP://servername/OU=Services,OU=PCX,DC=q2q,DC=xenyq,DC=com", "Administrator", "pass"); 

    try 
    { 
     DirectoryEntry newItem = root.Children.Add("CN=test_node", "valid_schema_class_name"); 

     root.CommitChanges(); 
    } 
    catch(Exception exc) 
    { 
     string error = exc.GetType().FullName + ": " + exc.Message; 
    } 
} 
+0

Marc,我試着按照你的建議修改代碼。根本沒有例外。但是該對象也不是創建的。其實我試圖創建一個AD模式中定義的自定義類的對象。 我很感激在這個問題上的任何其他想法。 :) – Humanier 2010-05-22 14:08:35

+0

Marc_s,感謝提供「CN」前綴的提示。 – Humanier 2010-05-22 14:59:53