Compartilhar via


FileSystemAclExtensions.Create Método

Definição

Sobrecargas

Create(DirectoryInfo, DirectorySecurity)

Cria um diretório, garantindo que ele seja criado com a segurança de diretório especificada. Se o diretório já existir, nenhuma ação será executada.

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

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

Create(DirectoryInfo, DirectorySecurity)

Cria um diretório, garantindo que ele seja criado com a segurança de diretório especificada. Se o diretório já existir, nenhuma ação será executada.

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, mas que será criado pelo método.

directorySecurity
DirectorySecurity

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

Exceções

directoryInfo ou directorySecurity é null.

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

O acesso ao caminho foi 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 DirectoryInfo.Create(DirectorySecurity) .NET Framework método.

Aplica-se a

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

Cria um fluxo de arquivos, garantindo que ele seja criado com as propriedades e as configurações 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, mas que será criado pelo método.

mode
FileMode

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

rights
FileSystemRights

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

share
FileShare

Um dos valores de enumeração para controlar o tipo de acesso que outros objetos de fluxo de arquivos podem ter ao 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 descrevem 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 combinação de rights e mode é inválida.

fileInfo ou fileSecurity é null.

mode ou share estão fora do intervalo de enumeração válido.

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