mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.0 KiB
74 lines
3.0 KiB
using Alphaleonis.Win32.Filesystem;
|
|
using System.Security.AccessControl;
|
|
|
|
namespace Security2
|
|
{
|
|
public partial class FileSystemAccessRule2
|
|
{
|
|
#region Properties
|
|
private FileSystemAccessRule fileSystemAccessRule;
|
|
private string fullName;
|
|
private bool inheritanceEnabled;
|
|
private string inheritedFrom;
|
|
|
|
public string Name { get { return System.IO.Path.GetFileName(fullName); } }
|
|
public string FullName { get { return fullName; } set { fullName = value; } }
|
|
public bool InheritanceEnabled { get { return inheritanceEnabled; } set { inheritanceEnabled = value; } }
|
|
public string InheritedFrom { get { return inheritedFrom; } set { inheritedFrom = value; } }
|
|
public AccessControlType AccessControlType { get { return fileSystemAccessRule.AccessControlType; } }
|
|
public FileSystemRights2 AccessRights { get { return (FileSystemRights2)fileSystemAccessRule.FileSystemRights; } }
|
|
public IdentityReference2 Account { get { return fileSystemAccessRule.IdentityReference; } }
|
|
public InheritanceFlags InheritanceFlags { get { return fileSystemAccessRule.InheritanceFlags; } }
|
|
public bool IsInherited { get { return fileSystemAccessRule.IsInherited; } }
|
|
public PropagationFlags PropagationFlags { get { return fileSystemAccessRule.PropagationFlags; } }
|
|
#endregion
|
|
|
|
public FileSystemAccessRule2(FileSystemAccessRule fileSystemAccessRule)
|
|
{
|
|
this.fileSystemAccessRule = fileSystemAccessRule;
|
|
}
|
|
|
|
public FileSystemAccessRule2(FileSystemAccessRule fileSystemAccessRule, FileSystemInfo item)
|
|
{
|
|
this.fileSystemAccessRule = fileSystemAccessRule;
|
|
this.fullName = item.FullName;
|
|
}
|
|
|
|
public FileSystemAccessRule2(FileSystemAccessRule fileSystemAccessRule, string path)
|
|
{
|
|
this.fileSystemAccessRule = fileSystemAccessRule;
|
|
}
|
|
|
|
public static implicit operator FileSystemAccessRule(FileSystemAccessRule2 ace2)
|
|
{
|
|
return ace2.fileSystemAccessRule;
|
|
}
|
|
public static implicit operator FileSystemAccessRule2(FileSystemAccessRule ace)
|
|
{
|
|
return new FileSystemAccessRule2(ace);
|
|
}
|
|
|
|
//REQUIRED BECAUSE OF CONVERSION OPERATORS
|
|
public override bool Equals(object obj)
|
|
{
|
|
return fileSystemAccessRule == (FileSystemAccessRule)obj;
|
|
}
|
|
public override int GetHashCode()
|
|
{
|
|
return fileSystemAccessRule.GetHashCode();
|
|
}
|
|
public override string ToString()
|
|
{
|
|
return string.Format("{0} '{1}' ({2})",
|
|
AccessControlType.ToString()[0],
|
|
Account.AccountName,
|
|
AccessRights.ToString()
|
|
);
|
|
|
|
}
|
|
public SimpleFileSystemAccessRule ToSimpleFileSystemAccessRule2()
|
|
{
|
|
return new SimpleFileSystemAccessRule(fullName, Account, AccessRights, AccessControlType);
|
|
}
|
|
}
|
|
}
|