как удалить учетную запись компьютера из Active Directory с помощью c#

#c# #active-directory

#c# #active-directory

Вопрос:

Есть ли какой-либо пример, который удаляет учетную запись компьютера из AD с помощью C #?

Я искал много источников, но все они касаются учетной записи пользователя.

добавил сюда свой код, по какой-то причине я всегда получал ошибки.

 public static bool checkExistingPC(string compName,string userName,string userPwd )
{
    try
    {
        DirectoryEntry entry = new DirectoryEntry("LDAP://test.com",userName,userPwd,AuthenticationTypes.Secure);
        DirectorySearcher mySearcher = new DirectorySearcher(entry);
       mySearcher.Filter = "(amp;(objectClass=computer)(|(cn="   compName   ")(dn="   compName   ")))";
       foreach (SearchResult result in mySearcher.FindAll())
       {
           if (result != null)
           {

               MessageBox.Show("computer GetDirectoryEntry():"   result.Path "n" "computer path: " result.Path);
                DirectoryEntry entryToRemove = new DirectoryEntry(result.Path,userName,userPwd);
                 entry.Children.Remove(entryToRemove);

               return true;
           }
           else
           {
               return false;
           }
       }
    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message);
    }
    return false;
}
  

Комментарии:

1. @Oli: Active Directory, служба каталогов Microsoft для Windows en.wikipedia.org/wiki/Active_Directory

2. Вы пробовали entryToRemove. DeleteTree(); ?

3. Также после удаления дерева попробуйте entryToRemove. CommitChanges(); Убедитесь, что вы удаляете только запись компьютера, а НЕ что-то еще: D

4. поскольку я понимаю, что DeleteTree удалит что-либо в контейнере объектов … я не пробовал, потому что я чувствую, что это небольшой риск

Ответ №1:

Если вы используете .NET 3.5 и выше (если нет — пора обновляться!), Вам следует ознакомиться с System.DirectoryServices.AccountManagement (S.DS.AM ) пространство имен. Прочитайте все об этом здесь:

В принципе, вы можете определить контекст домена и легко находить пользователей и / или группы в AD:

 // set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find the computer in question
ComputerPrincipal computer = ComputerPrincipal.FindByIdentity(ctx, "NAME");

// if found - delete it
if (computer != null)
{
   computer.Delete();
}
  

Новый S.DS.AM позволяет очень легко взаимодействовать с пользователями, компьютерами и группами в AD!

Комментарии:

1. Если требуются другие учетные данные, можно создать PrincipalContext с именем пользователя / паролем. Пример: new PrincipalContext(ContextType.Domain, "domain.net", "DC=domain,DC=net", ContextOptions.Negotiate | ContextOptions.Signing | ContextOptions.Sealing, "domain\username", "mySecretPassword")

Ответ №2:

Используя ADSI, который System.DirectoryServices использует механизм фиксации, вот рабочий пример :

 /* Retreiving RootDSE infos
 */
string ldapBase = "LDAP://WM2008R2ENT:389/";
string sFromWhere = ldapBase   "rootDSE";
DirectoryEntry root = new DirectoryEntry(sFromWhere, "dom\jpb", "PWD");
string defaultNamingContext = root.Properties["defaultNamingContext"][0].ToString();

/* Retreiving the computer to remove
 */
sFromWhere = ldapBase   defaultNamingContext;
DirectoryEntry deBase = new DirectoryEntry(sFromWhere, "dom\jpb", ".biènèsph^r^.1966");

DirectorySearcher dsLookForDomain = new DirectorySearcher(deBase);
dsLookForDomain.Filter = "(amp;(cn=MACHSUPR))"; // MACHSUPR is the computer to delete
dsLookForDomain.SearchScope = SearchScope.Subtree;
dsLookForDomain.PropertiesToLoad.Add("cn");
dsLookForDomain.PropertiesToLoad.Add("distinguishedName");

SearchResultCollection srcComputer = dsLookForDomain.FindAll();

foreach (SearchResult aComputer in srcComputer)
{
  /* For each computer
   */
  DirectoryEntry computerToDel = aComputer.GetDirectoryEntry();
  computerToDel.DeleteTree();
  computerToDel.CommitChanges();
}
  

Комментарии:

1. спасибо, мне удалось заставить его работать на основе предоставленного вами кода.

Ответ №3:

Используйте WMI и или System.DirectoryServices пространство имен (http://msdn.microsoft.com/en-us/library/system.directoryservices.aspx ).

Комментарии:

1. Посмотрите на: msdn.microsoft.com/en-us/library /…

Ответ №4:

Возможно, это не совсем то, что вы ищете, но на этом сайте представлен ряд примеров кода для работы с AD на C #, включая удаление группы безопасности и удаление пользователя из группы

Комментарии:

1. спасибо, но я обнаружил, что на этом веб-сайте нет информации об учетных записях компьютеров