2011-08-11 126 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 
} 

不過,我想知道,如果每個規則是ActiveDirectoryAccessRule亞型如PropertyAccessRule之一也獲得訪問規則的集合的Active Directory對象。

這可能嗎?我沒有看到提供此信息的類屬性。

回答

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沒有你期望的內容。 –

相關問題