2012-06-25 16 views
1

Domain 2008 R2,DC。管理員。 DelphiXe2。E_ADS_SCHEMA_VIOLATION

我獲取用戶信息與ADOConnection1.SQL:

選擇 extensionAttribute1, extensionAttribute2, CN, SN, 給定名稱, 顯示名, sAMAccountName賦, 的UserPrincipalName, 郵件, 稱號, telephonenumber , 公司, 部門, 說明, objectSid, physicalDe liveryOfficeName, userAccountControl的 從 'LDAP:// DC = RU/DC = MYDOMAIN/OU =用戶' 其中 objectCategory = '人' 和對象類= '用戶' 和 userAccountControl的<> 514 和userAccountControl的<> 546 按名稱排列

所有工作正常。 我把新用戶:

Uses ActiveDs_TLB, ActiveX, ComObj; 

.. 
var Usr: IADsUser; Comp: IADsContainer; 
begin 
try 
CoInitialize(nil); 
Comp:=GetObject('WinNT://localhost') as IADsContainer; 
Usr:=comp.Create('user','Koko') as IADsUser; 
usr.SetPassword('Fa123456789'); 
// usr.FirstName:='Pups'; 
Usr.SetInfo; 
except .. 
end; 
end; 

問題:

  1. 上面的代碼工作正常,當我添加新用戶。但是,如果我嘗試添加什麼或屬性,例如FirstName(unRem usr。FirstName),我收到錯誤E_ADS_SCHEMA_VIOLATION。如何治療?
  2. 通過屬性Usr提示:IADsUser;更改擴展屬性,例如「extensionAttribute1」?
  3. 是否可以通過查詢ADOConnection1.SQL添加新用戶,或者更改指定用戶的屬性?

或者如何正確添加用戶在活動目錄中的所有屬性?

回答

1

在設置密碼之前創建用戶第一次調用SetInfo之後。

+0

如果我打電話給setinfo w/o密碼 - 接收錯誤'密碼不回答安全策略的規則'(translate bad) –

+0

也許你缺少一些必須的屬性,如用戶名(sAMAccountName)。如果您使用的是Active Directory,請考慮使用首選的LDAP提供程序。 – Remko

+0

非常感謝。花了幾天時間才明​​白。通過LDAP和ADsGetObject函數做了所有工作。 –