我如何获得使用c#的活动目录用户属性(不是特定用户例如属性)例如cn.cn,邮件等的列表?活动目录属性列表使用c#
回答
DirectoryEntry dir = new DirectoryEntry();
dir.Path = "LDAP://YourActiveDirServername ";
DirectorySearcher sea = new DirectorySearcher(dir);
sea.Filter = "(sAMAccountName=Uname)";
SearchResult seares = sea.FindOne();
StringBuilder str = new StringBuilder();
System.DirectoryServices.ResultPropertyCollection prop = seares.Properties;
ICollection coll = prop.PropertyNames;
IEnumerator enu = coll.GetEnumerator();
while (enu.MoveNext())
{
str.Append(enu.Current + " = " + seares.Properties[enu.Current.ToString()][0] + "\n");
}
此外,看一看:http://www.codeproject.com/KB/system/everythingInAD.aspx
这只会给你这个用户拥有的属性(例如,为这个用户设置的值)。这不会** **枚举在LDAP模式中定义的所有**属性 – 2011-03-17 05:48:33
这只会让您获得该用户的属性......而不是针对所述问题的“所有属性”。 – 2016-12-30 20:24:50
如果你在.NET 3.5及以上,则需要在System.DirectoryServices.ActiveDirectory
此检查出类。您需要查看像ActiveDirectorySchema
和ActiveDirectorySchemaClass
这样的课程。
您可以通过使用得到当前AD架构的保持:
ActiveDirectorySchema currSchema = ActiveDirectorySchema.GetCurrentSchema();
当你有当前的模式,你可以检查各种类的定义,如:
ActiveDirectorySchemaClass userSchema = currSchema.FindClass("person");
一旦你有该对象,您可以检查,并列举其属性,像:
- MandatoryProperties
- 可选属性
等等,以深入了解AD架构。
doh,你比我快3秒:) – 2011-03-17 06:20:05
你可以使用WMI:
ObjectGetOptions objectGetOptions = new ObjectGetOptions(null, System.TimeSpan.MaxValue, true);
ManagementClass managementClass = new ManagementClass("root\\directory\\LDAP", "ads_user", objectGetOptions);
foreach (PropertyData dataObject in managementClass.Properties)
{
Console.WriteLine(dataObject.Name);
}
虽然ADExplorer没有列出所有可用的属性,我发现一个伟大的工具,看到什么去哪里。
您可以从http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx
UserPropertyList = new List<string>();
ActiveDirectorySchema currSchema = ActiveDirectorySchema.GetCurrentSchema();
ICollection Collection = currSchema.FindAllProperties();
IEnumerator Enumerator = Collection.GetEnumerator();
while (Enumerator.MoveNext())
{
UserPropertyList.Add(Enumerator.Current.ToString());
}
上面的代码下载它会增加Active Directory中的所有搜索属性的UserPropertyList...
拓展业务上marc_s的答案。以下是一个完整的代码示例,其中显示了公共名称和实际属性名称。
ActiveDirectorySchema schema = ActiveDirectorySchema.GetCurrentSchema();
ActiveDirectorySchemaClass person = schema.FindClass("user");
foreach(ActiveDirectorySchemaProperty property in person.GetAllProperties())
{
Console.WriteLine("{0} = {1}", property.CommonName, property.Name);
}
示例输出。
Common-Name = cn
Instance-Type = instanceType
NT-Security-Descriptor = nTSecurityDescriptor
Object-Category = objectCategory
Object-Class = objectClass
Object-Sid = objectSid
SAM-Account-Name = sAMAccountName
Account-Expires = accountExpires
...
- 1. C#发布列表属性(活动目录)
- 2. 活动目录属性
- 3. 活动目录复制用户属性
- 4. C#活动目录属性登录计数达到最大值
- 5. Java eclipse - 活动目录,属性修改
- 6. 显示活动目录扩展属性
- 7. 活动目录显示表中的所有属性
- 8. 栏目列表记录属性如x
- 9. C#类目录和属性
- 10. C#活动目录认证
- 11. 活动目录连接C#
- 12. 使用MVC授权与角色属性使用Azure的活动目录+ OWIN
- 13. C#:通用列表属性
- 14. 如何使用C#获取活动目录中的部门列表
- 15. 从活动目录获取当前登录用户的列表
- 16. 如何在PowerShell中使用SAMAccountName属性来查找活动目录用户?
- 17. RoR活动记录未知属性
- 18. 活动目录
- 19. 如何使用Net :: LDAP修改布尔LDAP活动目录属性?
- 20. 活动目录:成员和memberof属性关系
- 21. 邮件地址的活动目录属性
- 22. exchange powershell:找到活动目录的办公室属性
- 23. Java eclipse - 活动目录,修改属性#2
- 24. 使用ASP.NET 2中的活动目录组登录表单
- 25. Laravel用户活动属性
- 26. 使用属性列表
- 27. neo4j使用列表属性
- 28. C#属性的类列表
- 29. 如何在活动记录由对象属性获得列型
- 30. rails通过修改属性排列活动记录对象
我想你应该用“活动目录”而不是asp.net或mvc来标记这个问题,因为这个问题与他们中的任何一个都没有关系。 – neontapir 2011-03-17 05:19:36
或者可能是你应该添加标签ldap – 2011-03-17 05:24:46