0

ドメイン ユーザーを作成して、現在のマシンのローカル グループに追加しようとしています。ドメインで add を呼び出すときにこれを行うたびに、これを取得します{"A member could not be added to or removed from the local group because the member does not exist.\r\n"}。ただし、テスターがディレクトリを監視していたため、ユーザーが存在することはわかっており、作成コードを実行するとすぐにユーザーが表示されました。

SID を NTUser アカウントに変換すると、domain\test.user ではなく domain\$DDDDD-FAF234AFS という名前になってしまうことに気付きました。なぜそれが起こっているのですか、それはおそらく私の問題ですか?

ユーザーを作成するコードは次のとおりです。

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;
    }

ユーザーは、ユーザー名、パスワード、および説明を含む単なるカスタム クラスです。プリンシパル コンテキストは、ドメインの有効なコンテキストです。

ユーザーをローカルドメインに追加するために使用するコードは次のとおりです。

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});
        }
    }

また、ユーザーをローカルマシンに追加したことはなく、ドメインに追加するだけです。それは多分私の問題ですか?

4

1 に答える 1

0

私はこれを理解し、他の誰かが同様の問題を抱えている場合に備えて、ここに私の解決策があります. 基本的に、samAccountnameを一度も設定しなかったため、失敗していました。これをユーザー名に設定すると、すべてが完全に機能しました。

于 2012-11-30T14:34:44.533 に答える