2011-08-11 23 views
3

私は、このようなActive Directoryでは、どのようにActiveDirectoryAccessRuleのタイプを決定しますか?

ActiveDirectorySecurity ads = directoryEntry.ObjectSecurity; 
AuthorizationRuleCollection arc = ads.GetAccessRules(true, true, typeof(NTAccount)); 

foreach (ActiveDirectoryAccessRule adar in arc) 
{ 
    // get rule properties 
} 

などのコードを使用してActive Directoryオブジェクトのアクセスルールのコレクションを取得することができますしかし、私は、各ルールは、PropertyAccessRuleなどActiveDirectoryAccessRuleサブタイプの一つでもあるかどうかを知りたいです。

これは可能ですか?この情報を提供するクラスプロパティは表示されません。

答えて

1

あなたはタイプを確認するためにisを使用することができます - 例えば:

if (adar is System.DirectoryServices.PropertyAccessRule) 
{ 
// do whatever you need to do if it is a PropertyAccessRule... 
} 

すべてがActiveDirectoryAccessRuleから継承するので、あなたが次でこれを行うことができます:

System.DirectoryServices.CreateChildAccessRule 
System.DirectoryServices.DeleteChildAccessRule 
System.DirectoryServices.DeleteTreeAccessRule 
System.DirectoryServices.ExtendedRightAccessRule 
System.DirectoryServices.ListChildrenAccessRule 
System.DirectoryServices.PropertyAccessRule 
System.DirectoryServices.PropertySetAccessRule 


http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectoryaccessrule.aspx#inheritanceContinuedを見ます

+0

ヒントをお寄せいただきありがとうございます。私は肯定的なヒットは得られませんでした。つまり、私はクラス構造や他の何かを誤解しています。 –

+0

ループ内では、adar.GetType()は参照してください。あなたのACLにあなたが期待しているものがない可能性があります。 –

関連する問題