Sdílet prostřednictvím


FileSystemAclExtensions.Create Metoda

Definice

Přetížení

Create(DirectoryInfo, DirectorySecurity)

Vytvoří nový adresář a zajistí, že se vytvoří se zadaným zabezpečením adresáře. Pokud adresář již existuje, nic se nedělá.

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

Vytvoří nový datový proud souboru a zajistí, že se vytvoří se zadanými vlastnostmi a nastavením zabezpečení.

Create(DirectoryInfo, DirectorySecurity)

Vytvoří nový adresář a zajistí, že se vytvoří se zadaným zabezpečením adresáře. Pokud adresář již existuje, nic se nedělá.

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)

Parametry

directoryInfo
DirectoryInfo

Adresář, který ještě neexistuje a který bude vytvořen metodou .

directorySecurity
DirectorySecurity

Řízení přístupu a zabezpečení auditu pro adresář.

Výjimky

directoryInfo nebo directorySecurity je null.

Nelze najít část cesty.

Přístup k cestě byl odepřen.

Příklady

Následující příklad kódu vytvoří nový adresář v dočasné složce uživatele se zadanými atributy zabezpečení adresáře:

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

Poznámky

Tato metoda rozšíření byla přidána do .NET Core, aby přinesla funkce poskytované DirectoryInfo.Create(Zabezpečení adresáře) Metoda rozhraní .NET Framework.

Platí pro

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

Vytvoří nový datový proud souboru a zajistí, že se vytvoří se zadanými vlastnostmi a nastavením zabezpečení.

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

Parametry

fileInfo
FileInfo

Soubor, který ještě neexistuje a který bude vytvořen metodou .

mode
FileMode

Jedna z hodnot výčtu, která určuje, jak má operační systém otevřít soubor.

rights
FileSystemRights

Jedna z hodnot výčtu, která definuje přístupová práva, která se mají použít při vytváření pravidel přístupu a auditování.

share
FileShare

Jedna z hodnot výčtu pro řízení druhu přístupu ostatní objekty datového proudu souborů mohou mít ke stejnému souboru.

bufferSize
Int32

Počet bajtů ve vyrovnávací paměti pro čtení a zápisy do souboru.

options
FileOptions

Jedna z hodnot výčtu, která popisuje, jak vytvořit nebo přepsat soubor.

fileSecurity
FileSecurity

Objekt, který určuje řízení přístupu a zabezpečení auditu pro soubor.

Návraty

Datový proud souboru pro nově vytvořený soubor.

Výjimky

Kombinace rights a mode je neplatná.

fileInfo nebo fileSecurity je null.

mode nebo share jsou mimo svůj zákonný výčtový rozsah.

-nebo-

bufferSize není kladné číslo.

Nelze najít část cesty.

Došlo k vstupně-výstupní chybě.

Přístup k cestě byl odepřen.

Příklady

Následující příklad kódu vytvoří nový textový soubor v dočasné složce uživatele a explicitně určí všechny atributy zabezpečení:

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

Poznámky

Tato metoda rozšíření byla přidána do .NET Core, aby přinesla funkce poskytované:

Platí pro