【发布时间】:2012-10-24 13:36:21
【问题描述】:
我们有一个流程需要检查特定用户是否是本地管理员组的成员。
检查代码如下所示:
using (PrincipalContext context = new PrincipalContext(ContextType.Machine, null))
{
UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, sUserName);
if (user != null)
{
SecurityIdentifier adminsGroupSID = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
GroupPrincipal group = GroupPrincipal.FindByIdentity(context, IdentityType.Sid, adminsGroupSID.Value);
if (group != null)
{
if (user.IsMemberOf(group))
return 0;
}
}
}
当组的帐户(例如域帐户)被删除时,我们会收到 PrincipalOperationException 和消息“枚举组成员身份时发生错误 (1332)。无法解析成员的 SID。”
有没有办法克服这个问题: a) 从组中手动删除孤立的 SID b) 不忽略它?
谢谢
【问题讨论】:
标签: c# active-directory