创建域用户并将故障添加到本地组

时间:2012-11-29 14:53:27

标签: c# active-directory

我正在尝试创建域用户,然后将其添加到当前计算机上的本地组。每当我在域名上添加add时,我都会收到此{"A member could not be added to or removed from the local group because the member does not exist.\r\n"}。但是我知道用户存在,因为我的测试人员正在观看目录,只要我的创建代码运行,用户就会出现。

我会说我注意到当我将SID转换为NTUser帐户时,我最终将域名\ $ DDDDD-FAF234AFS作为名称而不是域\ test.user。为什么这是hapening,也许是我的问题?

以下是我创建用户的代码:

private UserPrincipal CreateNewUser(Section.User.User user, PrincipalContext principal)
    {
        _logger.Debug("User did not exist creating now.");
        UserPrincipal newUser = new UserPrincipal(principal)
            {
                Name = user.UserName.Contains('\\') ? user.UserName.Split('\\')[1] : user.UserName,
                Description = string.IsNullOrEmpty(user.UserDescription) ? "IIS {0} user.".FormatWith(user.UserType) : user.UserDescription,
                UserCannotChangePassword = false,
                PasswordNeverExpires = true,
                PasswordNotRequired = false,
                Enabled = true
            };
        _logger.Debug("User created.");

        _logger.Debug("Setting user password and applying to the system.");
        newUser.SetPassword(user.UserPassword);
        newUser.Save();

        return newUser;
    }

用户只是一个包含用户名,密码和说明的自定义类。 principalcontext是域的有效上下文。

以下是我用来将用户添加到本地域的代码:

private void AddDomainUserToGroup(Principal groupPrincipal, Principal user, string group)
    {
        using (DirectoryEntry groupEntry = groupPrincipal.GetUnderlyingObject() as DirectoryEntry)
        using (DirectoryEntry userEntry = user.GetUnderlyingObject() as DirectoryEntry)
        {
            NTAccount ntUser = user.Sid.Translate(typeof (NTAccount)) as NTAccount;
            string domain = ntUser.ToString().Split('\\')[0];
            string userPath = string.Format("WinNT://{0}/{1},user", domain, user);

            groupEntry.Invoke("Add", new object[] {userPath});
        }
    }

此外,我从未将用户添加到本地计算机,我只是将它们添加到域中。那是我的问题吗?

1 个答案:

答案 0 :(得分:0)

我想出了这个,以防其他人有类似的问题,这是我的解决方案。基本上它失败了,因为我从来没有设置samAccountname oonce我设置为我的用户名一切都很完美。