Udostępnij za pośrednictwem


FileSystemAclExtensions.Create Metoda

Definicja

Przeciążenia

Create(DirectoryInfo, DirectorySecurity)

Tworzy nowy katalog, upewniając się, że jest tworzony z określonymi zabezpieczeniami katalogu. Jeśli katalog już istnieje, nic nie zostanie zrobione.

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

Tworzy nowy strumień plików, upewniając się, że jest tworzony z określonymi właściwościami i ustawieniami zabezpieczeń.

Create(DirectoryInfo, DirectorySecurity)

Tworzy nowy katalog, upewniając się, że jest tworzony z określonymi zabezpieczeniami katalogu. Jeśli katalog już istnieje, nic nie zostanie zrobione.

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

Katalog, który jeszcze nie istnieje, zostanie utworzony przez metodę .

directorySecurity
DirectorySecurity

Kontrola dostępu i inspekcja zabezpieczeń katalogu.

Wyjątki

directoryInfo lub directorySecurity ma wartość null.

Nie można odnaleźć części ścieżki.

Odmowa dostępu do ścieżki.

Przykłady

Poniższy przykład kodu tworzy nowy katalog wewnątrz folderu tymczasowego użytkownika z określonymi atrybutami zabezpieczeń katalogu:

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

Uwagi

Ta metoda rozszerzenia została dodana do platformy .NET Core w celu zapewnienia funkcjonalności udostępnionej przez plik DirectoryInfo.Twórca(DirectorySecurity) .NET Framework metoda.

Dotyczy

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

Tworzy nowy strumień plików, upewniając się, że jest tworzony z określonymi właściwościami i ustawieniami zabezpieczeń.

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

Plik, który jeszcze nie istnieje, zostanie utworzony przez metodę .

mode
FileMode

Jedna z wartości wyliczenia, która określa sposób otwierania pliku przez system operacyjny.

rights
FileSystemRights

Jedna z wartości wyliczenia, która definiuje prawa dostępu do użycia podczas tworzenia reguł dostępu i inspekcji.

share
FileShare

Jedna z wartości wyliczenia służąca do kontrolowania rodzaju dostępu do innych obiektów strumienia plików może mieć ten sam plik.

bufferSize
Int32

Liczba bajtów buforowanych dla odczytów i zapisów w pliku.

options
FileOptions

Jedna z wartości wyliczenia, która opisuje sposób tworzenia lub zastępowania pliku.

fileSecurity
FileSecurity

Obiekt, który określa zabezpieczenia kontroli dostępu i inspekcji dla pliku.

Zwraca

Strumień plików dla nowo utworzonego pliku.

Wyjątki

Kombinacja i mode jest nieprawidłowarights.

fileInfo lub fileSecurity ma wartość null.

mode lub share są poza zakresem wyliczenia prawnego.

-lub-

bufferSize nie jest liczbą dodatnią.

Nie można odnaleźć części ścieżki.

Wystąpił błąd we/wy.

Odmowa dostępu do ścieżki.

Przykłady

Poniższy przykład kodu tworzy nowy plik tekstowy wewnątrz folderu tymczasowego użytkownika, jawnie określając wszystkie atrybuty zabezpieczeń:

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

Uwagi

Ta metoda rozszerzenia została dodana do platformy .NET Core w celu zapewnienia funkcjonalności udostępnionej przez:

Dotyczy