1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
using System;
using System.Security.AccessControl;
namespace System.IO
{
public partial class Directory
{
public static DirectoryInfo CreateDirectory (string path, System.Security.AccessControl.DirectorySecurity directorySecurity)
=> CreateDirectory (path); //ignore directorySecurity
public static DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections)
{
return new DirectorySecurity (path, includeSections);
}
public static DirectorySecurity GetAccessControl (string path)
{
// AccessControlSections.Audit requires special permissions.
return GetAccessControl (path,
AccessControlSections.Owner |
AccessControlSections.Group |
AccessControlSections.Access);
}
public static void SetAccessControl(string path, DirectorySecurity directorySecurity)
{
if (directorySecurity == null)
throw new ArgumentNullException(nameof(directorySecurity));
String fullPath = Path.GetFullPath(path);
directorySecurity.PersistModifications(fullPath);
}
// Used by System.Environment
internal static string InsecureGetCurrentDirectory()
{
MonoIOError error;
string result = MonoIO.GetCurrentDirectory(out error);
if (error != MonoIOError.ERROR_SUCCESS)
throw MonoIO.GetException(error);
return result;
}
internal static void InsecureSetCurrentDirectory(string path)
{
if (path == null)
throw new ArgumentNullException ("path");
if (path.Trim ().Length == 0)
throw new ArgumentException ("path string must not be an empty string or whitespace string");
MonoIOError error;
if (!Exists (path))
throw new DirectoryNotFoundException ("Directory \"" +
path + "\" not found.");
MonoIO.SetCurrentDirectory (path, out error);
if (error != MonoIOError.ERROR_SUCCESS)
throw MonoIO.GetException (path, error);
}
}
}
|