FileSystemAclExtensions.Create メソッド

定義

オーバーロード

名前 説明
Create(DirectoryInfo, DirectorySecurity)

新しいディレクトリを作成し、指定されたディレクトリ セキュリティで作成されるようにします。 ディレクトリが既に存在する場合、何も行われません。

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

新しいファイル ストリームを作成し、指定されたプロパティとセキュリティ設定を使用して作成されるようにします。

Create(DirectoryInfo, DirectorySecurity)

新しいディレクトリを作成し、指定されたディレクトリ セキュリティで作成されるようにします。 ディレクトリが既に存在する場合、何も行われません。

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)

パラメーター

directoryInfo
DirectoryInfo

メソッドによって作成されるディレクトリがまだ存在しません。

directorySecurity
DirectorySecurity

ディレクトリのアクセス制御と監査のセキュリティ。

例外

directoryInfo または directorySecuritynull

パスの一部が見つかりませんでした。

パスへのアクセスが拒否されました。

次のコード例では、指定したディレクトリ セキュリティ属性を使用して、ユーザーの一時フォルダー内に新しいディレクトリを作成します。

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

注釈

この拡張メソッドは、.NET Core に追加され、DirectoryInfo.Create(DirectorySecurity) .NET Framework メソッドによって提供された機能が提供されました。

適用対象

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

新しいファイル ストリームを作成し、指定されたプロパティとセキュリティ設定を使用して作成されるようにします。

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

パラメーター

fileInfo
FileInfo

メソッドによって作成される、まだ存在しないファイル。

mode
FileMode

オペレーティング システムでファイルを開く方法を指定する列挙値の 1 つ。

rights
FileSystemRights

アクセス規則と監査規則の作成時に使用するアクセス権を定義する列挙値の 1 つ。

share
FileShare

他のファイル ストリーム オブジェクトが同じファイルに対して持つアクセスの種類を制御するための列挙値の 1 つ。

bufferSize
Int32

ファイルへの読み取りと書き込みのためにバッファーに格納されたバイト数。

options
FileOptions

ファイルを作成または上書きする方法を説明する列挙値の 1 つ。

fileSecurity
FileSecurity

ファイルのアクセス制御と監査セキュリティを決定するオブジェクト。

返品

新しく作成されたファイルのファイル ストリーム。

例外

rightsmodeの組み合わせが無効です。

fileInfo または fileSecuritynull

mode または share が法的列挙型の範囲外です。

-又は-

bufferSize は正の数ではありません。

パスの一部が見つかりませんでした。

I/O エラーが発生しました。

パスへのアクセスが拒否されました。

次のコード例では、ユーザーの一時フォルダー内に新しいテキスト ファイルを作成し、すべてのセキュリティ属性を明示的に指定します。

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

注釈

この拡張メソッドは、.NET Core に追加され、次によって提供された機能が提供されました。

適用対象