通过AccountManagement将AD用户添加到计算机本地组

时间:2012-08-13 17:42:19

标签: c# active-directory account-management userprincipal

我想通过User和GroupPrincipals实现将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,我认为这将允许在机器上进行组操作,因为该帐户是机器本地管理员组的一部分。我是否可以不以这种方式混合机器/域上下文,或者是否存在我遗漏的身份验证问题?

1 个答案:

答案 0 :(得分:0)

您是否在管理员模式下运行Visual Studio。即使您的登录具有管理员权限,如果您没有将其启动升级,您的程序也需要提升自己以使用这些权限。

请参阅: