FileSystemAclExtensions.Create Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
Create(DirectoryInfo, DirectorySecurity) |
Crea un nuevo directorio, asegurándose de que se crea con la seguridad de directorio especificada. Si el directorio ya existe, no se hace nada. |
Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity) |
Crea una nueva secuencia de archivos, asegurándose de que se crea con las propiedades y la configuración de seguridad especificadas. |
Create(DirectoryInfo, DirectorySecurity)
Crea un nuevo directorio, asegurándose de que se crea con la seguridad de directorio especificada. Si el directorio ya existe, no se hace nada.
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
Directorio que todavía no existe y que se creará mediante el método.
- directorySecurity
- DirectorySecurity
Control de acceso y seguridad de auditoría del directorio.
Excepciones
directoryInfo
o directorySecurity
es null
.
No se encuentra una parte de la ruta de acceso.
Acceso denegado a la ruta de acceso.
Ejemplos
En el ejemplo de código siguiente se crea un directorio dentro de la carpeta temporal del usuario con los atributos de seguridad de directorio 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);
}
}
}
Comentarios
Este método de extensión se agregó a .NET Core para incorporar la funcionalidad proporcionada por DirectoryInfo.Create(DirectorySecurity) Método de .NET Framework.
Se aplica a
Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)
Crea una nueva secuencia de archivos, asegurándose de que se crea con las propiedades y la configuración de seguridad 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
Archivo que todavía no existe y que se creará mediante el método.
- mode
- FileMode
Uno de los valores de enumeración que especifica cómo el sistema operativo debe abrir un archivo.
- rights
- FileSystemRights
Uno de los valores de enumeración que define los derechos de acceso que se van a usar al crear reglas de acceso y de auditoría.
- share
- FileShare
Uno de los valores de enumeración para controlar el tipo de acceso que pueden tener otros objetos de secuencia de archivos para el mismo archivo.
- bufferSize
- Int32
Número de bytes almacenados en el búfer para leer y escribir en el archivo.
- options
- FileOptions
Uno de los valores de enumeración que describe cómo crear o sobrescribir el archivo.
- fileSecurity
- FileSecurity
Objeto que determina el control de acceso y la seguridad de auditoría del archivo.
Devoluciones
Secuencia de archivos para el archivo recién creado.
Excepciones
La combinación de rights
y mode
no es válida.
fileInfo
o fileSecurity
es null
.
mode
o share
están fuera de su intervalo de enumeración legal.
o bien
bufferSize
no es un número positivo.
No se encuentra una parte de la ruta de acceso.
Error de E/S.
Acceso denegado a la ruta de acceso.
Ejemplos
En el ejemplo de código siguiente se crea un nuevo archivo de texto dentro de la carpeta temporal del usuario, especificando explícitamente todos los atributos de seguridad:
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
}
}
}
Comentarios
Este método de extensión se agregó a .NET Core para aportar la funcionalidad proporcionada por:
- El constructor FileStream(String, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity) .NET Framework.
- File.Create(Método String, Int32, FileOptions, FileSecurity .NET Framework.