FileSystemSecurity クラス
アセンブリ: mscorlib (mscorlib.dll 内)


FileSystemSecurity クラスは、FileSecurity クラスと DirectorySecurity クラスの基本クラスです。これらのクラスは、システム ファイルまたはディレクトリのすべてのアクセス権を表し、アクセス試行を監査する方法を定義します。
FileSystemSecurity クラスは、一連の規則としてアクセス権と監査権限を表します。各アクセス規則は FileSystemAccessRule オブジェクトによって表され、各監査規則は FileSystemAuditRule オブジェクトによって表されます。
FileSystemSecurity クラスは、基になる Microsoft Windows ファイル セキュリティ システムを抽象化したクラスです。このシステムでは、各ファイルまたはディレクトリには、そのファイルまたはディレクトリへのアクセスを制御する随意アクセス制御リスト (DACL: Discretionary Access Control List) と、監査対象のアクセス制御試行を指定するシステム アクセス制御リスト (SACL: System Access Control List) があります。FileSystemAccessRule クラスと FileSystemAuditRule クラスは、DACL と SACL を構成するアクセス制御エントリ (ACE: Access Control Entry) を抽象化したクラスです。
FileSystemSecurity クラスは、DACL と SACL の詳細の多くを隠します。したがって、ACE の順序や null DACL を気にかける必要はありません。
新規または変更済みのアクセス制御リスト (ACL) 情報をファイルに保持するには、SetAccessControl メソッドまたは SetAccessControl メソッドを使用します。新規または変更済みの ACL 情報をディレクトリに保持するには、SetAccessControl メソッドまたは SetAccessControl メソッドを使用します。
ファイルから ACL 情報を取得するには、GetAccessControl メソッドまたは GetAccessControl メソッドを使用します。ディレクトリから ACL 情報を取得するには、GetAccessControl メソッドまたは GetAccessControl メソッドを使用します。

FileSecurity クラスを使用して、アクセス制御リスト (ACL: Access Control List) のエントリを追加した後、そのエントリをファイルから削除するコード例を次に示します。この例を実行するには、有効なユーザー アカウントまたはグループ アカウントを指定する必要があります。
Imports System Imports System.IO Imports System.Security.AccessControl Module FileExample Sub Main() Try Dim fileName As String = "test.xml" Console.WriteLine("Adding access control entry for " & fileName) ' Add the access control entry to the file. AddFileSecurity(fileName, "DomainName\AccountName", _ FileSystemRights.ReadData, AccessControlType.Allow) Console.WriteLine("Removing access control entry from " & fileName) ' Remove the access control entry from the file. RemoveFileSecurity(fileName, "DomainName\AccountName", _ FileSystemRights.ReadData, AccessControlType.Allow) Console.WriteLine("Done.") Catch e As Exception Console.WriteLine(e) End Try End Sub ' Adds an ACL entry on the specified file for the specified account. Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, _ ByVal rights As FileSystemRights, ByVal controlType As AccessControlType) ' Get a FileSecurity object that represents the ' current security settings. Dim fSecurity As FileSecurity = File.GetAccessControl(fileName) ' Add the FileSystemAccessRule to the security settings. Dim accessRule As FileSystemAccessRule = _ New FileSystemAccessRule(account, rights, controlType) fSecurity.AddAccessRule(accessRule) ' Set the new access settings. File.SetAccessControl(fileName, fSecurity) End Sub ' Removes an ACL entry on the specified file for the specified account. Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String, _ ByVal rights As FileSystemRights, ByVal controlType As AccessControlType) ' Get a FileSecurity object that represents the ' current security settings. Dim fSecurity As FileSecurity = File.GetAccessControl(fileName) ' Add the FileSystemAccessRule to the security settings. fSecurity.RemoveAccessRule(New FileSystemAccessRule(account, _ rights, controlType)) ' Set the new access settings. File.SetAccessControl(fileName, fSecurity) End Sub End Module
using System; using System.IO; using System.Security.AccessControl; namespace FileSystemExample { class FileExample { public static void Main() { try { string fileName = "test.xml"; Console.WriteLine("Adding access control entry for " + fileName); // Add the access control entry to the file. AddFileSecurity(fileName, @"DomainName\AccountName", FileSystemRights.ReadData, AccessControlType.Allow); Console.WriteLine("Removing access control entry from " + fileName); // Remove the access control entry from the file. RemoveFileSecurity(fileName, @"DomainName\AccountName", FileSystemRights.ReadData, AccessControlType.Allow); Console.WriteLine("Done."); } catch (Exception e) { Console.WriteLine(e); } } // Adds an ACL entry on the specified file for the specified account. public static void AddFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. FileSecurity fSecurity = File.GetAccessControl(fileName); // Add the FileSystemAccessRule to the security settings. fSecurity.AddAccessRule(new FileSystemAccessRule(account , rights, controlType)); // Set the new access settings. File.SetAccessControl(fileName, fSecurity); } // Removes an ACL entry on the specified file for the specified account. public static void RemoveFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. FileSecurity fSecurity = File.GetAccessControl(fileName); // Add the FileSystemAccessRule to the security settings. fSecurity.RemoveAccessRule(new FileSystemAccessRule(account , rights, controlType)); // Set the new access settings. File.SetAccessControl(fileName, fSecurity); } } }
using namespace System; using namespace System::IO; using namespace System::Security::AccessControl; // Adds an ACL entry on the specified file for the specified account. void AddFileSecurity(String^ fileName, String^ account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. FileSecurity^ fSecurity = File::GetAccessControl(fileName); // Add the FileSystemAccessRule to the security settings. fSecurity->AddAccessRule(gcnew FileSystemAccessRule (account,rights, controlType)); // Set the new access settings. File::SetAccessControl(fileName, fSecurity); } // Removes an ACL entry on the specified file for the specified account. void RemoveFileSecurity(String^ fileName, String^ account, FileSystemRights rights, AccessControlType controlType) { // Get a FileSecurity object that represents the // current security settings. FileSecurity^ fSecurity = File::GetAccessControl(fileName); // Remove the FileSystemAccessRule to the security settings. fSecurity->RemoveAccessRule(gcnew FileSystemAccessRule (account,rights, controlType)); // Set the new access settings. File::SetAccessControl(fileName, fSecurity); } int main() { try { String^ fileName = "test.xml"; Console::WriteLine("Adding access control entry for " + fileName); // Add the access control entry to the file. AddFileSecurity(fileName, "MYDOMAIN\\MyAccount", FileSystemRights::ReadData, AccessControlType::Allow); Console::WriteLine("Removing access control entry from " + fileName); // Remove the access control entry from the file. RemoveFileSecurity(fileName, "MYDOMAIN\\MyAccount", FileSystemRights::ReadData, AccessControlType::Allow); Console::WriteLine("Done."); } catch (Exception^ ex) { Console::WriteLine(ex->Message); } }

System.Security.AccessControl.ObjectSecurity
System.Security.AccessControl.CommonObjectSecurity
System.Security.AccessControl.NativeObjectSecurity
System.Security.AccessControl.FileSystemSecurity
System.Security.AccessControl.DirectorySecurity
System.Security.AccessControl.FileSecurity


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- FileSystemSecurity クラスのページへのリンク