0
我想实现通过User和GroupPrincipals将AD用户添加到本地计算机组,并且我认为它会很好用和简单。不幸的是,我继续得到一般拒绝访问错误。我可能只是不理解正确的身份验证,但我认为我已经设置了正确的访问权限。这里是被称为什么代码片段:通过AccountManagement将AD用户添加到计算机本地组
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()步,我用常规访问被拒绝治疗例外。通过“MyUser”和“MyPW”打开ctx,我认为这将允许在机器上进行组操作,因为该帐户是机器本地管理员组的一部分。我能不能以这种方式混合机器/域环境,还是存在一个我只是缺少的身份验证问题?
我会尝试这一点,但我也跑了一个开发服务器上,它的表现同样的方式 - 拒绝即使身份的访问应用程序池(以及创建上下文时使用的用户名/密码)是机器管理员组的一部分。 – 2012-08-13 18:49:52