ファイルのアクセス権を削除する - C#

C#でファイルのアクセス権を削除する方法を紹介します。

概要

今回は、こちらの記事に記載されている方法でファイルに追加したアクセス権を削除します。
対象となるファイルのみにアクセス権を追加した場合はこの記事で紹介する方法でアクセス権を削除できますが、アクセス権が親フォルダから継承されている場合はこの方法では削除できません。継承されているファイルのアクセス権を削除する方法はこちらの記事になります。

コード例: .NET 5以降

private void button2_Click(object sender, EventArgs e)
{
  string filePath = @"c:\\develop\text.txt";
  FileInfo fi = new FileInfo(filePath);
  FileSecurity security = FileSystemAclExtensions.GetAccessControl(fi);
  security.PurgeAccessRules(new NTAccount("everyone"));
  FileSystemAclExtensions.SetAccessControl(fi, security); 
}

解説

FileInfo オブジェクトを作成し、FileSystemAclExtensions.GetAccessControl() メソッドで、 FileSecurity オブジェクトを作成します。
  FileInfo fi = new FileInfo(filePath);
  FileSecurity security = FileSystemAclExtensions.GetAccessControl(fi);

FileSecurity オブジェクトから"everyone"のアクセス権を削除します。
  security.PurgeAccessRules(new NTAccount("everyone"));

指定したファイルに"everyone"のアクセス権を削除したセキュリティ情報(FileSecurity オブジェクト)を適用します。
  FileSystemAclExtensions.SetAccessControl(fi, security); 

コード例: .NET Framework

private void button11_Click_1(object sender, EventArgs e)
{
  string filePath = @"c:\\develop\text.txt";
  FileSecurity security = File.GetAccessControl(filePath);
  security.PurgeAccessRules(new NTAccount("everyone"));
  File.SetAccessControl(filePath, security);
}

解説

File.GetAccessControl()メソッドを呼び出して、ファイルパスから、 ファイルのセキュリティ情報(FileSecurity オブジェクト)を取得します。
FileSecurity security = File.GetAccessControl(filePath);

FileSecurityオブジェクトから"everyone"のアクセス権を削除します。
security.PurgeAccessRules(new NTAccount("everyone"));

指定したファイルに"everyone"のアクセス権を削除したセキュリティ情報(FileSecurityオブジェクト)を適用します。
File.SetAccessControl(filePath, security);
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2010-11-25
改訂日: 2022-11-03
iPentec all rights reserverd.