Поделиться через


FileSystemAclExtensions.Create Метод

Определение

Перегрузки

Create(DirectoryInfo, DirectorySecurity)

Создает каталог с указанными атрибутами безопасности. Если каталог уже существует, ничего не происходит.

Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

Создает файловый поток с указанными свойствами и параметрами безопасности.

Create(DirectoryInfo, DirectorySecurity)

Создает каталог с указанными атрибутами безопасности. Если каталог уже существует, ничего не происходит.

public:
[System::Runtime::CompilerServices::Extension]
 static void Create(System::IO::DirectoryInfo ^ directoryInfo, System::Security::AccessControl::DirectorySecurity ^ directorySecurity);
public static void Create (this System.IO.DirectoryInfo directoryInfo, System.Security.AccessControl.DirectorySecurity directorySecurity);
static member Create : System.IO.DirectoryInfo * System.Security.AccessControl.DirectorySecurity -> unit
<Extension()>
Public Sub Create (directoryInfo As DirectoryInfo, directorySecurity As DirectorySecurity)

Параметры

directoryInfo
DirectoryInfo

Каталог, который не существует, но будет создан методом.

directorySecurity
DirectorySecurity

Возможности управления доступом и аудита безопасности для каталога.

Исключения

Параметр directoryInfo или directorySecurity имеет значение null.

Не удалось найти часть пути.

Отказано в доступе по пути.

Примеры

В следующем примере кода создается новый каталог во временной папке пользователя с указанными атрибутами безопасности каталога:

using System.IO;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Security.Principal;

namespace MyNamespace
{
    public class MyClassCS
    {
        // Attribute to address CA1416 warning:
        // System.IO.FileSystem.AccessControl APIs are  only available on Windows
        [SupportedOSPlatform("windows")]
        static void Main()
        {
            // Create the file security object

            SecurityIdentifier identity = new SecurityIdentifier(
                WellKnownSidType.BuiltinUsersSid, // This maps to "Everyone" user group in Windows
                null); // null is OK for this particular user group. For others, a non-empty value might be required
            FileSystemAccessRule accessRule = new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Allow);

            DirectorySecurity expectedSecurity = new DirectorySecurity();
            expectedSecurity.AddAccessRule(accessRule);

            // Make sure the directory does not exist, then create it

            string dirPath = Path.Combine(Path.GetTempPath(), "directoryToCreate");
            DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
            if (dirInfo.Exists)
            {
                dirInfo.Delete(recursive: true);
            }

            dirInfo.Create(expectedSecurity);
        }
    }
}

Комментарии

Этот метод расширения был добавлен в .NET Core для предоставления функциональных возможностей, предоставляемых DirectoryInfo.Create(DirectorySecurity) метод платформа .NET Framework.

Применяется к

Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

Создает файловый поток с указанными свойствами и параметрами безопасности.

public:
[System::Runtime::CompilerServices::Extension]
 static System::IO::FileStream ^ Create(System::IO::FileInfo ^ fileInfo, System::IO::FileMode mode, System::Security::AccessControl::FileSystemRights rights, System::IO::FileShare share, int bufferSize, System::IO::FileOptions options, System::Security::AccessControl::FileSecurity ^ fileSecurity);
public static System.IO.FileStream Create (this System.IO.FileInfo fileInfo, System.IO.FileMode mode, System.Security.AccessControl.FileSystemRights rights, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, System.Security.AccessControl.FileSecurity fileSecurity);
public static System.IO.FileStream Create (this System.IO.FileInfo fileInfo, System.IO.FileMode mode, System.Security.AccessControl.FileSystemRights rights, System.IO.FileShare share, int bufferSize, System.IO.FileOptions options, System.Security.AccessControl.FileSecurity? fileSecurity);
static member Create : System.IO.FileInfo * System.IO.FileMode * System.Security.AccessControl.FileSystemRights * System.IO.FileShare * int * System.IO.FileOptions * System.Security.AccessControl.FileSecurity -> System.IO.FileStream
<Extension()>
Public Function Create (fileInfo As FileInfo, mode As FileMode, rights As FileSystemRights, share As FileShare, bufferSize As Integer, options As FileOptions, fileSecurity As FileSecurity) As FileStream

Параметры

fileInfo
FileInfo

Файл, который не существует, но будет создан методом.

mode
FileMode

Одно из значений перечисления, определяющих способ открытия файла операционной системой.

rights
FileSystemRights

Одно из значений перечисления, определяющих права доступа при создании правил доступа и аудита.

share
FileShare

Одно из значений перечисления для управления типом доступа других объектов файловых потоков к одному и тому же файлу.

bufferSize
Int32

Число байтов, буферизируемых при чтении и записи в данный файл.

options
FileOptions

Одно из значений перечисления, которое описывает, как создавать или перезаписывать файл.

fileSecurity
FileSecurity

Объект, определяющий правила управления доступом и аудита безопасности для файла.

Возвращаемое значение

Файловый поток для созданного файла.

Исключения

Недопустимое сочетание rights и mode.

Параметр fileInfo или fileSecurity имеет значение null.

Значение mode или share выходит за пределы допустимого диапазона перечисления.

-или-

Значение bufferSize не является положительным числом.

Не удалось найти часть пути.

Ошибка ввода/вывода.

Отказано в доступе по пути.

Примеры

В следующем примере кода создается новый текстовый файл во временной папке пользователя, явно указывающий все атрибуты безопасности:

using System;
using System.IO;
using System.Runtime.Versioning;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Text;

namespace MyNamespace
{
    public class MyClassCS
    {
        // Attribute to address CA1416 warning:
        // System.IO.FileSystem.AccessControl APIs are  only available on Windows
        [SupportedOSPlatform("windows")]
        static void Main()
        {
            // Create the file security object

            var identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
            var accessRule = new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Allow);

            var security = new FileSecurity();
            security.AddAccessRule(accessRule);

            // Make sure the file does not exist, or FileMode.CreateNew will throw

            string filePath = Path.Combine(Path.GetTempPath(), "temp.txt");
            var fileInfo = new FileInfo(filePath);
            if (fileInfo.Exists)
            {
                fileInfo.Delete();
            }

            // Create the file with the specified security and write some text

            using (FileStream stream = fileInfo.Create(
                FileMode.CreateNew,
                FileSystemRights.FullControl,
                FileShare.ReadWrite,
                4096, // Default buffer size
                FileOptions.None,
                security))
            {
                string text = "Hello world!";
                byte[] writeBuffer = new UTF8Encoding(encoderShouldEmitUTF8Identifier: true).GetBytes(text);

                stream.Write(writeBuffer, 0, writeBuffer.Length);
            } // Dispose flushes the file to disk
        }
    }
}

Комментарии

Этот метод расширения был добавлен в .NET Core для предоставления функциональных возможностей, предоставляемых:

Применяется к