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

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);
}
}
}