2011-08-08 5 views
0

を設定したプロパティのためのActive Directoryを照会しないようにする方法:System.DirectoryServices - 機密ビットが、私はそうのような個人またはグループのためのDirectoryEntriesを照会するDirectoryServicesを使用してい

var propsToLoad = new string {"sAMAccountName","objectClass", "memberOf", "distinguishedName", "manager","mail","name","objectCategory"}; 
DirectoryEntry dEntry = new DirectoryEntry("LDAP://<MyDomainController>/DC=foo,FC=com","user","pass"); 
DirectorySearcher dSearch = new DirectorySearcher(dEntry, "(&(|(objectClass=person)(objectClass=group)) 
(samAccountName=jsmith))", propsToLoad); 
var searchResult = s.FindOne(); 
var searchResultDirEntry = result.GetDirectoryEntry(); 

問題私がいますSearchResultDirectoryEntryを取得する上記の呼び出しが、私が照会しているものより多くのプロパティを取得しているということです。 デバッグ中にsearchResultの上にカーソルを置くと、8個のプロパティが含まれていますが、をsearchResultというクエリで呼び出すと、 のプロパティ(約77-80個以上のプロパティ値)が呼び出されます。

本当の問題は、それはまた、その「機密ビット」DCの監査障害を引き起こすような「UnixUserPassword」 として設定されている特性のために照会されることです。

機密ビットセットを有する任意のプロパティを照会OR result.GetDirectoryEntry();に関して 私の「propsToLoad」を持っているだけで、私はDirectorySearcherに指定したプロパティのプロパティ値を取得しないように指定する方法はあります。

答えて

0

いいえ、実際はありません。 propsToLoad配列はLDAP検索に渡されます。 GetDirectoryEntry()APIを呼び出すと、まったく異なるコードパスになります。このレベルの制御が必要な場合は、S.DS.Protocolsで直接LDAPに対処する必要があります。

+0

"System.DirectortyServices"名前空間内でこれを行う例はありますか? –

+0

私が言ったように、ADSIはスキーマ反射の仕組みに基づいてこれを制御することはできません。 –

+0

私は、単にPropertyValuesのSearchResultに問い合わせるのではなく、 –

関連する問題