FileSystemAclExtensions.Create Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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:
- O construtor FileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity) .NET Framework.
- O File.Create(String, Int32, FileOptions, FileSecurity .NET Framework método.