UserPrincipal仅返回登录用户

时间:2014-09-29 14:05:24

标签: c# .net active-directory

我正在开发一个项目,希望允许在Active Directory和我们使用的其他一些应用程序中创建单击用户。

我正在使用

using System.DirectoryServices.AccountManagement;

命名空间和

UserPrinciple

对象

我遇到的问题是,即使我将其他用户传递给方法,它也只会返回登录用户

这是一些代码

将用户添加到新群组

public bool AddUserToGroup(string sUserName, string sGroupName)
        {
            try
            {
                UserPrincipal oUserPrincipal = GetUser(sUserName);
                Trace.WriteLine(oUserPrincipal.Context);
                GroupPrincipal oGroupPrincipal = GetGroup(sGroupName);
                if (oGroupPrincipal != null)
                {
                    if (!IsUserGroupMember(sUserName, sGroupName))
                    {
                        oGroupPrincipal.Members.Add(pp);
                        oGroupPrincipal.Save();
                    }
                }
                return true;
            }
            catch
            {
                return false;
            }
        }

这是GetUser()

UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, sUserName);
            return oUserPrincipal;

但它只返回登录用户。

如果您需要更多信息,请与我们联系......

我期待一些回复:)

马丁

编辑PrincipalContext方法

PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain, sDefaultOU, ContextOptions.SimpleBind, sServiceUser, sServicePassword);
            return oPrincipalContext;

1 个答案:

答案 0 :(得分:0)

我发现您必须将帐户类型传递给GetUser方法

原来是

UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, sUserName);
            return oUserPrincipal;

现在就像这样

UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, IdentityType.SamAccountName, sUserName);
        return oUserPrincipal;

如果你没有指定

IdentityType.SamAccountName 

它会在本地看

马丁