我想通过 User 和 GroupPrincipals 实现将 AD 用户添加到本地机器组,我认为它会工作得很好而且很容易。不幸的是,我继续收到 General Access Denied 错误。可能我只是不了解发生的正确身份验证,但我认为我已经设置了正确的访问权限。这是被调用的代码片段:
var ctx = new PrincipalContext(ContextType.Machine,
Environment.MachineName,
ConfigurationManager.AppSettings["MyUser"],
ConfigurationManager.AppSettings["MyPW"]);
var grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "LocalGrp");
var adUser = ADService.GetUserByDomainUserName(vModel.ContactId);
var adCtx = new PrincipalContext(ContextType.Domain,
"myDomain.com",
ConfigurationManager.AppSettings["MyUser"],
ConfigurationManager.AppSettings["MyPW"])
;
var user = UserPrincipal.FindByIdentity(adCtx,
IdentityType.Guid,
adUser.UserGuid.ToString());
if (grp != null &&
user != null)
{
if(!user.IsMemberOf(grp))
{
grp.Members.Add(user);
grp.Save();
}
}
找到了用户,找到了组,但是当我添加并到达 grp.Save() 步骤时,我遇到了 General Access Denied 异常。通过“MyUser”和“MyPW”打开 ctx,我认为这将允许在机器上进行组操作,因为该帐户是机器本地管理员组的一部分。我不能以这种方式混合机器/域上下文,还是我只是缺少身份验证问题?