我正在开发一个项目,希望允许在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;
答案 0 :(得分:0)
我发现您必须将帐户类型传递给GetUser方法
原来是
UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, sUserName);
return oUserPrincipal;
现在就像这样
UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, IdentityType.SamAccountName, sUserName);
return oUserPrincipal;
如果你没有指定
IdentityType.SamAccountName
它会在本地看
马丁