2011-09-26 19 views
1

Active DirectoryでC#経由でユーザーを削除しようとしています。次のコードを実行しようとすると、エラーが発生しました。C#経由でActive Directoryのユーザーを削除する

エラーメッセージ:

A local error has occurred 

コード:

DirectoryEntry ent = new DirectoryEntry("LDAP://192.168.1.99/OU=FIRMA"); 
    ent.Username = "idm\administrator"; 
    ent.Password = "123123QQ"; 
    DirectorySearcher dsrc = new DirectorySearcher(ent); 
    dsrc.Filter = string.Format("(&(objectCategory=user)(SAMAccountName=adKullaniciadi))"); 
    DirectoryEntry silsunuya = ent.Children.Find("CN=adKullaniciadi","objectClass=person"); 
    ent.Children.Remove(silsunuya); 
    ent.Close(); 
    silsunuya.Close(); 
    dsrc.Dispose(); 

答えて

1

私たちのITチームは、ADアカウントを削除するために使用するローカル実行しているASP.Netのウェブサイトを持っている、正常に動作するようです。私はこのアプリケーションを開発していたときに、対処しなければならなかったニュアンスがたくさんあったことを思い出します。これはADで何が起こっているのか把握するのに苦労します。ここで私は(VB.Netで)使用していますコードです:「(

  1. dsrc.PropertiesToLoad.Addを使用してみてください:
    Public Shared Function GetUser(ByVal username As String) As DirectoryEntry 
        If String.IsNullOrEmpty(username) Then Return Nothing 
    
        Dim path As String = ConfigurationManager.ConnectionStrings("ADConnectionString").ConnectionString 
        Dim ds As New DirectorySearcher(path) 
    
        ds.Filter = "(&(objectClass=user)(sAMAccountName=" + username + "))" 
        ds.PropertiesToLoad.Add("sAMAccountName")   ' username 
        ds.PropertiesToLoad.Add("mail")   ' e-mail address 
        ds.PropertiesToLoad.Add("description") ' Bureau ID 
        ds.PropertiesToLoad.Add("company")  ' company name 
        ds.PropertiesToLoad.Add("givenname") ' first name 
        ds.PropertiesToLoad.Add("sn")   ' last name 
        ds.PropertiesToLoad.Add("name")   ' client name 
        ds.PropertiesToLoad.Add("cn")   ' common name 
        ds.PropertiesToLoad.Add("dn")   ' display name 
        ds.PropertiesToLoad.Add("pwdLastSet") 
        ds.SearchScope = SearchScope.Subtree 
        Dim results As SearchResult = ds.FindOne 
    
        If results IsNot Nothing Then 
         Return New DirectoryEntry(results.Path) 
        Else 
         Return Nothing 
        End If 
    End Function 
    
    Public Shared Sub DeleteUser(ByVal username As String, Optional ByVal useImpersonation As Boolean = False) 
        Dim user As DirectoryEntry = GetUser(username) 
        Dim ou As DirectoryEntry = user.Parent 
        ou.Children.Remove(user) 
        ou.CommitChanges() 
    End Sub 
    

    はあなたのコードを見てみるが、ここで気になるいくつかのアイデアです
  2. ent.CommitChanges()の呼び出しを追加してみてください
  3. パスと資格情報が正しいことを、たとえばコマンドラインのADクエリツールを使用して確認できますか?
  4. エラーが発生する行を具体的に特定できますか?
+0

私はポイント2に同意します。私はそれが問題になると思います。 http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.commitchanges.aspxを参照してください。 –

関連する問題