FileSystemAclExtensions.Create Método

Definição

Sobrecargas

Name Description
Create(DirectoryInfo, DirectorySecurity)

Cria um novo diretório, garantindo que é criado com a segurança de diretório especificada. Se o diretório já existir, nada é feito.

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

Cria um novo fluxo de ficheiros, garantindo que é criado com as propriedades e definições de segurança especificadas.

Create(DirectoryInfo, DirectorySecurity)

Cria um novo diretório, garantindo que é criado com a segurança de diretório especificada. Se o diretório já existir, nada é 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 e que será criado pelo método.

directorySecurity
DirectorySecurity

O controlo de acesso e a segurança de auditoria para o diretório.

Exceções

directoryInfo ou directorySecurity é null.

Não consegui encontrar parte do caminho.

O acesso ao caminho é negado.

Exemplos

O seguinte exemplo de código cria um novo diretório dentro da pasta temporária do utilizador com os atributos de segurança do 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);
        }
    }
}

Observações

Este 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 ficheiros, garantindo que é criado com as propriedades e definiçõ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 ficheiro que ainda não existe e que será criado pelo método.

mode
FileMode

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

rights
FileSystemRights

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

share
FileShare

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

bufferSize
Int32

O número de bytes armazenados em buffer para leituras e escritas no ficheiro.

options
FileOptions

Um dos valores de enumeração que descreve como criar ou sobrescrever o ficheiro.

fileSecurity
FileSecurity

Um objeto que determina o controlo de acesso e a segurança de auditoria do ficheiro.

Devoluções

Um fluxo de ficheiros para o ficheiro recém-criado.

Exceções

A rights combinação e mode é inválida.

fileInfo ou fileSecurity é null.

mode ou share estão fora do seu alcance legal de enum.

-ou-

bufferSize não é um número positivo.

Não consegui encontrar parte do caminho.

Ocorreu um erro de I/O.

O acesso ao caminho é negado.

Exemplos

O seguinte exemplo de código cria um novo ficheiro de texto dentro da pasta temporária do utilizador, 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
        }
    }
}

Observações

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

Aplica-se a