尝试使用 C# 中的目录服务帐户管理删除本地用户组时出现异常

本文关键字:删除 用户组 异常 管理 目录服务 | 更新日期: 2023-09-27 18:34:55

我正在尝试以编程方式删除本地用户组。我正在使用以下代码,这些代码是从在线的各种示例中拼凑而成的。从我读过的所有内容来看,它应该有效。但是删除行会引发异常。

PrincipalContext context = new PrincipalContext( ContextType.Machine );
GroupPrincipal group = new GroupPrincipal( context );
PrincipalSearcher ps = new PrincipalSearcher( group );
PrincipalSearchResult<Principal> results = ps.FindAll();
Principal foundGroup = results.SingleOrDefault( item => item.Name == groupName );
if(foundGroup != null)
    foundGroup.Delete(); // Here occurs the InvalidOperationException

这将抛出一个带有以下消息的InvalidOperationException

位于路径 WinNT://LOREM/IPSUM 的 Active Directory 对象不是容器。

当涉及到这个Active Directory的东西时,我是一个完全的新手。

尝试使用 C# 中的目录服务帐户管理删除本地用户组时出现异常

这是不久前问过的,但我今天遇到了这个问题。组和用户主体库中似乎存在错误。这就是我为将来遇到此问题的任何人解决它的方式:

对于团体:

string groupName = "myGroup";
// Workaround: WinNT://DOMAIN/USER is not a container even if group is empty
using (var root = new DirectoryEntry($"WinNT://{Environment.MachineName}"))
using (var group = root.Children.Find(groupName, "group"))
{
    root.Children.Remove(group);
    result = true;
}

对于用户帐户:

string userAccountName = "myUser";
// Workaround: WinNT://DOMAIN/USER is not a container issue
using (var root = new DirectoryEntry($"WinNT://{Environment.MachineName}"))
using (var userAccount = root.Children.Find(userAccountName))
{
    root.Children.Remove(userAccount);
}

你能试试PrincipalSearchResult<GroupPrincipal>吗?

我也不确定你的.正确使用单项或默认。你能试试吗:

results.Where(item => item.Name == groupName).SingleOrDefault();