FileSystemAclExtensions.Create Metodo

Definizione

Overload

Create(DirectoryInfo, DirectorySecurity)

Crea una nuova directory, verificando che venga creata con la sicurezza della directory specificata. Se la directory esiste già non viene eseguita nessuna operazione.

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

Crea un nuovo flusso di file, verificando che venga creato con le proprietà e le impostazioni di sicurezza specificate.

Create(DirectoryInfo, DirectorySecurity)

Crea una nuova directory, verificando che venga creata con la sicurezza della directory specificata. Se la directory esiste già non viene eseguita nessuna operazione.

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)

Parametri

directoryInfo
DirectoryInfo

Una directory che non esiste ancora e che verrà creata dal metodo.

directorySecurity
DirectorySecurity

Controllo di accesso e sicurezza di controllo della directory.

Eccezioni

directoryInfo o directorySecurity è null.

Non è possibile trovare una parte del percorso.

Accesso al percorso negato.

Esempio

Nell'esempio di codice seguente viene creata una nuova directory all'interno della cartella temporanea dell'utente con gli attributi di sicurezza della directory specificati:

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

Commenti

Questo metodo di estensione è stato aggiunto a .NET Core per portare la funzionalità fornita da DirectoryInfo.Create(DirectorySecurity) Metodo .NET Framework.

Si applica a

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

Crea un nuovo flusso di file, verificando che venga creato con le proprietà e le impostazioni di sicurezza specificate.

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

Parametri

fileInfo
FileInfo

Un file che non esiste ancora e che verrà creato dal metodo.

mode
FileMode

Uno dei valori di enumerazione che specifica la modalità con cui il sistema operativo apre un file.

rights
FileSystemRights

Uno dei valori di enumerazione che determina i diritti di accesso da usare quando si creano regole di accesso e di controllo.

share
FileShare

Uno dei valori di enumerazione per il controllo del tipo di accesso allo stesso file disponibile per altri oggetti flusso di file.

bufferSize
Int32

Numero di byte memorizzati nel buffer per letture e scritture nel file.

options
FileOptions

Uno dei valori di enumerazione che descrive come creare o sovrascrivere il file.

fileSecurity
FileSecurity

Oggetto che determina il controllo di accesso e la sicurezza di controllo per il file.

Restituisce

Flusso di file per il file appena creato.

Eccezioni

La combinazione di rights e mode non è valida.

fileInfo o fileSecurity è null.

mode o share non rientrano nel rispettivo intervallo enum valido.

-oppure-

bufferSize non è un numero positivo.

Non è possibile trovare una parte del percorso.

Si è verificato un errore di I/O.

Accesso al percorso negato.

Esempio

Nell'esempio di codice seguente viene creato un nuovo file di testo all'interno della cartella temporanea dell'utente, specificando in modo esplicito tutti gli attributi di sicurezza:

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

Commenti

Questo metodo di estensione è stato aggiunto a .NET Core per portare la funzionalità fornita da:

Si applica a