Imports System.IO
Imports System.Security.Principal
Imports System.Security.AccessControl
Module Module1
Sub Main()
ListDirectorySecurity("u:\Documents")
ListFileSecurity("U:\Assesment.xls")
End Sub
Public Sub ListDirectorySecurity(ByVal directoryName As String)
Dim di As New DirectoryInfo(directoryName)
Dim security As DirectorySecurity = di.GetAccessControl()
Dim rules As AuthorizationRuleCollection = security.GetAccessRules(True, True, GetType(NTAccount))
For Each rule As FileSystemAccessRule In rules
Console.WriteLine(" User: {0}", rule.IdentityReference)
Console.WriteLine(" Type: {0}", rule.AccessControlType)
Console.WriteLine(" Rights: {0}", rule.FileSystemRights)
Console.WriteLine(" Inheritance: {0}", rule.InheritanceFlags)
Console.WriteLine(" Propagation: {0}", rule.PropagationFlags)
Console.WriteLine(" Inherited? {0}", rule.IsInherited)
Console.WriteLine()
Next
End Sub
Public Sub ListFileSecurity(ByVal fileName As String)
Dim di As New FileInfo(fileName)
Dim security As FileSecurity = di.GetAccessControl()
Dim rules As AuthorizationRuleCollection = security.GetAccessRules(True, True, GetType(NTAccount))
For Each rule As FileSystemAccessRule In rules
Console.WriteLine(" User: {0}", rule.IdentityReference)
Console.WriteLine(" Type: {0}", rule.AccessControlType)
Console.WriteLine(" Rights: {0}", rule.FileSystemRights)
Console.WriteLine(" Inheritance: {0}", rule.InheritanceFlags)
Console.WriteLine(" Propagation: {0}", rule.PropagationFlags)
Console.WriteLine(" Inherited? {0}", rule.IsInherited)
Console.WriteLine()
Next
End Sub
End Module
So for checking the permissions for a file:
cacls <filename/path>
this should give you the require information. Maybe you can incorporate this into your code?