问题描述
是否可以在不指定的情况下从 LDAP 检索所有属性/值的列表,如果可以,这怎么可能?
Is it possible to retrieve a list of all attributes/values from LDAP without specifying, if so how can this be possible?
推荐答案
我抓取我的 DirectoryEntry 类对象的所有参数列表.我希望它会有所帮助:
I grab list of all parameters my DirectoryEntry class object. I hope it will help:
objectClass = System.Object[] cn = *****istrator sn = Kwiatek (Last name) c = PL (Country Code) l = Warszawa (City) st = Mazowieckie (Voivodeship) title = .NET Developer description = Built-in account for *****istering the computer/domain postalCode = 00-000 postOfficeBox = Warszawa Ursynów physicalDeliveryOfficeName = Wojskowa Akademia Techniczna givenName = Piotr (First name) distinguishedName = CN=*****istrator,CN=Users,DC=helpdesk,DC=wat,DC=edu instanceType = 4 whenCreated = 2012-11-23 06:09:28 whenChanged = 2013-02-23 13:24:41 displayName = Piotr Kwiatek (Konto *****istratora) uSNCreated = System.__ComObject memberOf = System.Object[] uSNChanged = System.__ComObject co = Poland company = HELPDESK streetAddress = Kaliskiego 2 wWWHomePage = http://www.piotr.kwiatek.org name = *****istrator objectGUID = System.Byte[] userAccountControl = 512 badPwdCount = 0 codePage = 0 countryCode = 616 badPasswordTime = System.__ComObject lastLogoff = System.__ComObject lastLogon = System.__ComObject logonHours = System.Byte[] pwdLastSet = System.__ComObject primaryGroupID = 513 objectSid = System.Byte[] *****Count = 1 accountExpires = System.__ComObject logonCount = 178 sAMAccountName = *****istrator sAMAccountType = 805306368 objectCategory = CN=Person,CN=Schema,CN=Configuration,DC=helpdesk,DC=wat,DC=edu isCriticalSystemObject = True dSCorePropagationData = System.Object[] lastLogonTimestamp = System.__ComObject mail = spam@kwiatek.org nTSecurityDescriptor = System.__ComObject
这里你有代码:
string currentUserSid = WindowsIdentity.GetCurrent().User.Value; PrincipalContext ctx = new PrincipalContext( ContextType.Domain, "helpdesk.wat.edu"); UserPrincipal up = UserPrincipal.FindByIdentity( ctx, IdentityType.Sid, currentUserSid); /* * */ DirectoryEntry entry = up.GetUnderlyingObject() as DirectoryEntry; PropertyCollection props = entry.Properties; /* * */ foreach (string propName in props.PropertyNames) { if (entry.Properties[propName].Value != null) { Console.WriteLine(propName + " = " + entry.Properties[propName].Value.ToString()); } else { Console.WriteLine(propName + " = NULL"); } } Console.ReadKey();