#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 ) пространство имен. Прочитайте все об этом здесь:
- Управление участниками безопасности каталогов в .NET Framework 3.5
- Документы MSDN в системе.DirectoryServices.Управление учетными записями
В принципе, вы можете определить контекст домена и легко находить пользователей и / или группы в 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. спасибо, но я обнаружил, что на этом веб-сайте нет информации об учетных записях компьютеров