从Active Directory获取用户部门 [英] Getting User Division from Active Directory
问题描述
您好,
我正在尝试从Active Directory获取Get User Division。获得Get User Group会员资格后,我在返回用户部门时遇到问题。我只是寻找唯一的组成员资格来确定用户所属的区域。错误消息在代码下方。
Hello,
I am attempting to get the Get User Division from Active Directory. I am having problem returning the User Division after I get the Get User Group Memberships. I am only looking for the unique group membership to determine what division the User is apart of. Error Message is below the code.
private string GetCurrentDomainPath()
{
DirectoryEntry de =
new DirectoryEntry("LDAP://RootDSE");
return "LDAP://" +
de.Properties["defaultNamingContext"][0].
ToString();
}
private bool DoUserExistingInAD(string strUser)
{
bool result = false;
DirectoryEntry obEntry = new DirectoryEntry(GetCurrentDomainPath());
DirectorySearcher srch = new DirectorySearcher(obEntry, "(SAccountName=" + strUser + ")");
SearchResult res = srch.FindOne();
if (null != res)
{
result = true;
}
return result;
}
private StringCollection GetUserGroupMembership(string strUser)
{
StringCollection groups = new StringCollection();
try
{
DirectoryEntry obEntry = new DirectoryEntry(
GetCurrentDomainPath());
DirectorySearcher srch = new DirectorySearcher(obEntry,
"(SAccountName=" + strUser + ")");
SearchResult res = srch.FindOne();
if (null != res)
{
DirectoryEntry obUser = new DirectoryEntry(res.Path);
// Invoke Groups method.
object obGroups = obUser.Invoke("Groups");
foreach (object ob in (IEnumerable)obGroups)
{
// Create object for each group.
DirectoryEntry obGpEntry = new DirectoryEntry(ob);
groups.Add(obGpEntry.Name);
}
}
}
catch (Exception ex)
{
Trace.Write(ex.Message);
}
return groups;
}
private ArrayList GetUserDivision(String strUser)
{
// string[] userGroup;
ArrayList userGroup = new ArrayList();
string userGroupTemp = string.Empty;
string _memberOf = string.Empty;
try {
foreach (string MemberOf in GetUserGroupMembership(strUser))
{
if (MemberOf.Contains("Cn="))
{
//User is affiliated with "EASTREGION-W"
if (_memberOf.Contains("CN=EASTREGION-W"))
{
userGroupTemp = "EASTREGION-W";
userGroup = userGroupTemp.Split('/').ToArray();
return userGroup;
}
//User is affiliated with "EASTREGION-A"
else if (_memberOf.Contains("CN=EASTREGION-A"))
{
userGroupTemp = "EASTREGION-A";
userGroup = userGroupTemp.Split('/').ToArray();
return userGroup;
}
//User is affiliated with "EASTREGION-O"
else if (_memberOf.Contains("CN=EASTREGION-O"))
{
userGroupTemp = "EASTREGION-O";
userGroup = userGroupTemp.Split('/').ToArray();
return userGroup;
}
//User is affiliated with "EASTREGION-R"
else if (_memberOf.Contains("CN= EASTREGION-R"))
{
userGroupTemp = "EASTREGION-R";
userGroup = userGroupTemp.Split('/').ToArray();
return userGroup;
}
//User is affiliated with "EASTREGION-S"
else if (_memberOf.Contains("EASTREGION-S"))
{
userGroupTemp = "EASTREGION-S";
userGroup = userGroupTemp.Split('/').ToArray();
return userGroup;
}
}
}
}
catch (Exception ex)
{
Trace.Write(ex.Message);
}
string [] string.Split(params char [] separator)(params char [] separator)(+ 5重载)
返回一个字符串数组,其中包含此实例中由指定Unicode字符数组的元素分隔的子字符串。
错误:
无法将类型'string []'隐式转换为'System.Collections.ArrayList'
string[] string.Split(params char[] separator) (params char[] separator) (+5 overload(s))
Returns a string array that contains the substrings in this instance that are delimited by elements of a specified Unicode character array.
Error:
Cannot implicitly convert type 'string[]' to 'System.Collections.ArrayList'
推荐答案
ArrayList是 sooo V1。
但为什么不简单地执行userGroup.Add(userGroupTemp)
?
ArrayList is sooo V1.
But why don't you simply douserGroup.Add ( userGroupTemp )
?
这篇关于从Active Directory获取用户部门的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!