Я создаю приложение для снятия с эксплуатации, которое позволит персоналу предоставить имя компьютера, и утилита выйдет и очистит компьютерную запись из разных мест. При попытке удалить учетную запись компьютера из Active Directory возникает проблема. Я выдаю себя за учетную запись службы, которая имеет права только на «Удалить все дочерние объекты» в рамках определенной структуры подразделения. Код ниже работает, если я запускаю его с учетной записью администратора домена; однако не работает с «Access Denied», когда я запускаю его с помощью персонализированной учетной записи службы. Я проверял, что разрешения правильны в AD, поскольку я могу запускать Active Directory - пользователи и компьютеры с помощью «runas» и предоставления учетных данных учетной записи службы, и я могу прекрасно удалять объекты компьютеров.ASP.NET - Удаление учетных записей компьютеров в AD
Удивительно, если кто-то столкнулся с этим раньше или имеет другой способ кодировать это, все еще используя мои текущие разрешения OU. Моя кишка говорит мне, что метод DeleteTree делает больше, чем просто удаляет объект.
Любая помощь будет оценена по достоинству.
Sub Main()
Dim strAsset As String = "computer9002"
Dim strADUsername As String = "[email protected]"
Dim strADPassword As String = "password"
Dim strADDomainController As String = "domaincontroller.domain.com"
Dim objDirectoryEntry As New System.DirectoryServices.DirectoryEntry
Dim objDirectorySearcher As New System.DirectoryServices.DirectorySearcher(objDirectoryEntry)
Dim Result As System.DirectoryServices.SearchResult
Dim strLDAPPath As String = ""
Try
objDirectoryEntry.Path = "LDAP://" & strADDomainController
objDirectoryEntry.Username = strADUsername
objDirectoryEntry.Password = strADPassword
objDirectorySearcher.SearchScope = DirectoryServices.SearchScope.Subtree
objDirectorySearcher.Filter = "(&(ObjectClass=Computer)(CN=" & strAsset & "))"
Dim intRecords As Integer = 0
For Each Result In objDirectorySearcher.FindAll
Console.WriteLine(Result.Path)
Diagnostics.Debug.WriteLine("DN: " & Result.Path)
Dim objComputer As System.DirectoryServices.DirectoryEntry = Result.GetDirectoryEntry()
objComputer.DeleteTree()
objComputer.CommitChanges()
intRecords += 1
Next
If intRecords = 0 Then
Console.WriteLine("No Hosts Found")
End If
Catch e As System.Exception
Console.WriteLine("RESULT: " & e.Message)
End Try
End Sub
Perfect. Да, я использую 4.0, чтобы работать так, как ожидалось. Большое спасибо за Вашу помощь. –