Я пытаюсь использовать PrincipalSearcher для поиска любых пользователей с определенным DisplayName и их удаления.
Если нет пользователей с подходящим DisplayName, код работает нормально.Однако, если он найден, возникает исключение:
System.InvalidOperationException: Не удается удалить уже удаленный объект в System.DirectoryServices.AccountManagement.Principal.CheckDisposedOrDeleted () в System.DirectoryServices.AccountManagement.Principal.get_Name ()}
Я установил точку останова на user.delete () и могу подтвердить, что присутствует пользователь.Однако, как только вызывается Delete, возникает исключение.
Я не вижу, где был удален объект.Любая помощь будет оценена.
public string DeleteUsers()
{
using (var principalContext = new PrincipalContext(
ContextType.Machine, null
))
{
using (var userPrincipal = new UserPrincipal(principalContext))
{
// All users will have the same DisplayName
userPrincipal.DisplayName = UserDisplayName;
//
// Search for all users with the above displayName
//
using (var principalSearcher = new PrincipalSearcher(
userPrincipal
))
{
var users = principalSearcher.FindAll();
string userString = "";
// Loop through each of them and delete them
foreach (var user in users)
{
var username = user.Name;
try
{
user.Delete();
}
catch (Exception e)
{
return $"Error: Could not delete user: {username}. " +
$"{e.Message}";
}
if (!String.IsNullOrEmpty(userString))
{
userString += ", ";
}
userString += username;
}
if (String.IsNullOrEmpty(userString))
{
return "No users deleted.";
}
return "Deleted the following users: " + userString;
}
}
}
}