Freigeben über


FileSystemAclExtensions.Create Methode

Definition

Überlädt

Create(DirectoryInfo, DirectorySecurity)

Erstellt ein neues Verzeichnis, wobei sichergestellt wird, dass es mit der angegebenen Verzeichnissicherheit erstellt wird. Wenn das Verzeichnis bereits vorhanden ist, wird nichts unternommen.

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

Erstellt einen neuen Datenstrom, wobei sichergestellt wird, dass er mit den angegebenen Eigenschaften und Sicherheitseinstellungen erstellt wird.

Create(DirectoryInfo, DirectorySecurity)

Erstellt ein neues Verzeichnis, wobei sichergestellt wird, dass es mit der angegebenen Verzeichnissicherheit erstellt wird. Wenn das Verzeichnis bereits vorhanden ist, wird nichts unternommen.

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)

Parameter

directoryInfo
DirectoryInfo

Ein Verzeichnis, das noch nicht vorhanden ist und von der Methode erstellt wird.

directorySecurity
DirectorySecurity

Die Zugriffssteuerung und Überwachungssicherheit für das Verzeichnis.

Ausnahmen

directoryInfo oder directorySecurity ist null.

Ein Teil des Pfads wurde nicht gefunden.

Der Zugriff auf den Pfad wurde verweigert.

Beispiele

Im folgenden Codebeispiel wird ein neues Verzeichnis im temporären Ordner des Benutzers mit den angegebenen Verzeichnissicherheitsattributen erstellt:

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

Hinweise

Diese Erweiterungsmethode wurde zu .NET Core hinzugefügt, um die Von DirectoryInfo.Create(DirectorySecurity) .NET Framework-Methode.

Gilt für:

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

Erstellt einen neuen Datenstrom, wobei sichergestellt wird, dass er mit den angegebenen Eigenschaften und Sicherheitseinstellungen erstellt wird.

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

Parameter

fileInfo
FileInfo

Eine Datei, die noch nicht vorhanden ist und von der Methode erstellt wird.

mode
FileMode

Einer der Enumerationswerte, der angibt, wie die das Betriebssystem eine Datei öffnen soll.

rights
FileSystemRights

Einer der Enumerationswerte, der die beim Erstellen der Zugriffs- und Überwachungsregeln zu verwendenden Zugriffsrechte definiert.

share
FileShare

Einer der Enumerationswerte für das Steuern der Zugriffsart von anderen Dateidatenstromobjekten auf dieselbe Datei.

bufferSize
Int32

Die Anzahl der für Lese- und Schreibvorgänge in die Datei gepufferten Bytes.

options
FileOptions

Einer der Enumerationswerte, der beschreibt, wie die Datei erstellt oder überschrieben werden soll.

fileSecurity
FileSecurity

Ein Objekt, das die Zugriffssteuerung und die Überwachungssicherheit für die Datei bestimmt.

Gibt zurück

Ein Dateidatenstrom für die neu erstellte Datei.

Ausnahmen

Die Kombination aus rights und mode ist ungültig.

fileInfo oder fileSecurity ist null.

mode oder share liegen außerhalb ihrer gültigen Aufzählungsbereiche.

- oder -

bufferSize ist keine positive Zahl.

Ein Teil des Pfads wurde nicht gefunden.

E/A-Fehler

Der Zugriff auf den Pfad wurde verweigert.

Beispiele

Im folgenden Codebeispiel wird eine neue Textdatei im temporären Ordner des Benutzers erstellt, wobei alle Sicherheitsattribute explizit angegeben werden:

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

Hinweise

Diese Erweiterungsmethode wurde zu .NET Core hinzugefügt, um die Funktionen zu nutzen, die von bereitgestellt wurden:

Gilt für: