FileSystemAclExtensions.Create Método

Definição

Sobrecargas

Nome Description
Create(DirectoryInfo, DirectorySecurity)

Cria um novo diretório, garantindo que ele seja criado com a segurança do diretório especificada. Se o diretório já existir, nada será feito.

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

Cria um novo fluxo de arquivos, garantindo que ele seja criado com as propriedades e as configurações de segurança especificadas.

Create(DirectoryInfo, DirectorySecurity)

Cria um novo diretório, garantindo que ele seja criado com a segurança do diretório especificada. Se o diretório já existir, nada será feito.

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)

Parâmetros

directoryInfo
DirectoryInfo

Um diretório que ainda não existe que será criado pelo método.

directorySecurity
DirectorySecurity

O controle de acesso e a segurança de auditoria do diretório.

Exceções

directoryInfo ou directorySecurity é null.

Não foi possível encontrar uma parte do caminho.

O acesso ao caminho é negado.

Exemplos

O exemplo de código a seguir cria um novo diretório dentro da pasta temporária do usuário com os atributos de segurança de diretório especificados:

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

Comentários

Esse método de extensão foi adicionado ao .NET Core para trazer a funcionalidade fornecida pelo método DirectoryInfo.Create(DirectorySecurity) .NET Framework.

Aplica-se a

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

Cria um novo fluxo de arquivos, garantindo que ele seja criado com as propriedades e as configurações de segurança especificadas.

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

Parâmetros

fileInfo
FileInfo

Um arquivo que ainda não existe que será criado pelo método.

mode
FileMode

Um dos valores de enumeração que especifica como o sistema operacional deve abrir um arquivo.

rights
FileSystemRights

Um dos valores de enumeração que define os direitos de acesso a serem usados ao criar regras de acesso e auditoria.

share
FileShare

Um dos valores de enumeração para controlar o tipo de acesso que outros objetos de fluxo de arquivo podem ter para o mesmo arquivo.

bufferSize
Int32

O número de bytes armazenados em buffer para leituras e gravações no arquivo.

options
FileOptions

Um dos valores de enumeração que descreve como criar ou substituir o arquivo.

fileSecurity
FileSecurity

Um objeto que determina o controle de acesso e a segurança de auditoria do arquivo.

Retornos

Um fluxo de arquivos para o arquivo recém-criado.

Exceções

A rights combinação e a mode combinação são inválidas.

fileInfo ou fileSecurity é null.

mode ou share estão fora do intervalo de enumeração legal.

- ou -

bufferSize não é um número positivo.

Não foi possível encontrar uma parte do caminho.

Ocorreu um erro de E/S.

O acesso ao caminho é negado.

Exemplos

O exemplo de código a seguir cria um novo arquivo de texto dentro da pasta temporária do usuário, especificando explicitamente todos os atributos de segurança:

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

Comentários

Esse método de extensão foi adicionado ao .NET Core para trazer a funcionalidade fornecida por:

Aplica-se a