0

我想通过 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,我认为这将允许在机器上进行组操作,因为该帐户是机器本地管理员组的一部分。我不能以这种方式混合机器/域上下文,还是我只是缺少身份验证问题?

4

1 回答 1

0

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

看:

于 2012-08-13T18:42:09.227 回答