我通过以下方法访问AD属性。它在我的本地VHD(我是域/本地/企业管理员)中工作正常 - 但是当我从域用户(只有本地管理员访问权限)访问时,它也不起作用。
但是同一个域用户(仅限本地管理员访问权限)使用ADExplorer(SysInternal)工具访问所有AD属性详细信息。
是因为这是非托管代码并且有Windows API可以访问,而在.Net中我需要域管理员或某些权限吗?
还是有另一种方式 - 我在.Net中缺少访问AD属性而没有额外的域级权限?
public void getCurrentUserADDetails(string UserName)
{
string ladpQueryStr = "LDAP://sp.com";
DirectoryEntry dirEntry = new DirectoryEntry(ladpQueryStr);
DirectorySearcher srch = new DirectorySearcher(dirEntry);
srch.Filter = "(cn=" + UserName.ToLowerInvariant().Trim() + ")";
srch.PropertiesToLoad.Add("name");
srch.PropertiesToLoad.Add("memberOf");
srch.PropertiesToLoad.Add("prop123");
SearchResult searcResult = srch.FindOne();
if (searcResult != null)
{
ResultPropertyCollection propertiesCollection = searcResult.Properties;
List<DisplayClass> grdDataList = new List<DisplayClass>();
foreach (string strKey in propertiesCollection.PropertyNames)
{
DisplayClass dispC = new DisplayClass();
dispC.pName = strKey;
dispC.pValue = Convert.ToString(propertiesCollection[strKey][0]);
grdDataList.Add(dispC);
}
dataGridView1.DataSource = grdDataList;
}
}
这将在ASP.Net中运行
提前感谢:)
答案 0 :(得分:0)
我假设您正在使用集成身份验证 - 为了实现此功能,您必须设置帐户委派,除非您在域控制器上运行您的应用程序。这是一个非常棘手的过程,但Google中有大量信息。
答案 1 :(得分:0)
通过使用显式身份验证并更改搜索过滤器,我得到了结果。
DirectoryEntry dirEntry = new DirectoryEntry(path,username,password,AuthenticationType);