ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ β GUID. GUID ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ 128-Π±ΠΈΡΠΎΠ²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Ρ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ GUID. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΡΠ» ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. GUID Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ GUID Ρ ΠΏΠΎΠΌΠΎΡΡΡ DirectoryEntry.NativeGuid. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΈΠΌΡ ΠΏΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π±Π΅Π· ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ GUID:
LDAP://<GUID=14abbd652aae1a47abc60782dcfc78ea>
ΠΠΌΠ΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Π΄ΠΎΠΌΠ΅Π½Π°Ρ Windows NTΠΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ WinNT Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ LDAP Π² ΡΠ°ΡΡΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΡΠΎΠΊΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ObjectName, ClassName. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΠΌΠ΅Π½Π° Windows NT ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
WinNT:
WinNT://DomainName
WinNT://DomairName/UserName, user
WinNT://DomainName/dc01/MyGroup, group
ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΡΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ, ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ²Π½ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠ΄ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π·Π°Π΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠΠ»Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎΠΌΠ΅Π½Π°:
domain\username
ΠΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΈΠΌΡΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
CN=Administrator, CN=Users, DC=eichkogelstrasse, DC=local
ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Π»Π° (UPN)UPN ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠ° userPrincipalName. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Account ΡΠ²ΠΎΠΉΡΡΠ² User Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡΡ Active Directory Users and Computers. UPN Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π΄ΡΠ΅ΡΠΎΠΌ e-mail ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ:
[email protected]
ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ
ΠΠ»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° AuthenticationType ΠΊΠ»Π°ΡΡΠ° DirectoryEntry. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΉ AuthenticationTypes.
Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° DirectoryEntry
ΠΠ»Π°ΡΡ System.DirectoryServices.DirectoryEntry ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Path, Username, Password ΠΈ AuthenticationType ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ:
using (DirectoryEntry de = new DirectoryEntry()) {
de.Path = "LDAP://celticrain/DC=eichkogelstrasse, DC=local";
de.Username = " [email protected]";
de.Password = "someSecret";
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
DirectoryEntry de2 = new DirectoryEntry("LDAP://DC=eichkogelstrasse, DC=local");
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° DirectoryEntry ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΡΠΌ. Π‘Π²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Ρ Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
ΠΠ»Π°ΡΡ DirectoryEntry ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Name, Guid ΠΈ SchemaClassName Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° DirectoryEntry ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΡΡ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ, ΠΌΡ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ· ΠΊΡΡΠ°, ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΠ±ΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Christian Nagel Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ Wrox Press.
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://celticrain/CN=Christian Nagel, " +
"OU=Wrox Press, DC=eichkogelstrasse, DC=local";
Console.WriteLine("Name: "+ de.Name);
Console.WriteLine("GUID: " + de.Guid);
Console.WriteLine("Type: " + de.SchemaClassName);
Console.WriteLine();
ΠΠ±ΡΠ΅ΠΊΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Properties Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ PropertyCollection. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΠΌΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΡΡ Π½ΠΎΠΌΠ΅ΡΠΎΠ². ΠΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° foreach. ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ· properties[name] ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ToString() Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Console.WriteLine("Attributes: ");
PropertyCollection properties = de.Properties;
foreach (string name in properties.PropertyNames) {
foreach (object ΠΎ in properties[name]) {
Console.WriteLine(name + ": " + o.ToString());
}
}
Π Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Christian Nagel. ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ otherTelephone ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΡΡ Π½ΠΎΠΌΠ΅ΡΠΎΠ². ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΡΠΎΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΡΡ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° System._ComObject. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ADSI COM, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π±Π΅ΡΡΡΡΡ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ System.DirectoryServices.
Π Π³Π»Π°Π²Π΅ 19 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ COM.
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ADSI ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³Ρ Simon Robinson, Professional ADSI Programming, Wrox Press, ISBN 1-861002-26-2.
ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈΠ‘ ΠΏΠΎΠΌΠΎΡΡΡ DirectoryEntry.Properties ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ. ΠΡΠ»ΠΈ ΠΈΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ:
foreach (string homePage in de.Properties["wWWHomePage"])
Console.WriteLine("Home page; " + homePage);
ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠ±ΡΠ΅ΠΊΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ-ΠΏΠΎΡΠΎΠΌΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Children ΠΊΠ»Π°ΡΡΠ° DirectoryEntry. Π Π΄ΡΡΠ³ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Parent.
ΠΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ΠΉ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΡ Wrox Press Π² Π΄ΠΎΠΌΠ΅Π½Π΅ eichkogelstrasse.local. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Children Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ DirectoryEntries, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ DirectoryEntry. ΠΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ DirectoryEntry Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²-ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ²:
DirectoryEntry de = new DirectoryEntry();
de.Path. = "LDAP://celticrain/OU=Wrox Press, " + "DC=eichkogelstrasse, DC=local";
Console.WriteLine("Children of " + de.Name);
foreach (DirectoryEntry obj in de.Children) {
Console.WriteLine(obj.Name);
}
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅: ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΠ½ΡΠ°ΠΊΡΡ, ΠΏΡΠΈΠ½ΡΠ΅ΡΡ, ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ SchemaFilter ΠΊΠ»Π°ΡΡΠ° DirectoryEntries:
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://celticrain/OU=Wrox Press, " + "DC=eichkogelstrasse, DC-local";
Console.WriteLine("Children of " + de.Name);
de.Children.SchemaFilter.Add("user");
foreach(DirectoryEntry obj in de.Children) {
Console.WriteLine(obj.Name);
}
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ:
ΠΡΡ
Π§ΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ, ADSI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° DirectoryEntry, Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. ΠΡΠΈ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΊΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ. ΠΡΠΎΡ ΠΊΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΊΠ»ΡΡΠ΅Π½ ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° DirectoryEntry.UsePropertyCache ΠΊΠ°ΠΊ false. ΠΡΡΡΠ΅ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.