C#でファイルのアクセス権を取得してみます。
ファイルのアクセス権を取得するためには、FileクラスのGetAccessControlメソッドを用います。
以下がアクセス権を取得するコード例となります。
ファイルのアクセス権を取得するためには、FileクラスのGetAccessControlメソッドを用います。
以下がアクセス権を取得するコード例となります。
forを用いた場合のコード
/*
// usingに以下を追加
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
*/
private void button1_Click(object sender, EventArgs e)
{
string filePath = @"C:\develop\text.txt";
string ace = "AccessControlType\tAccountName\tFileSystemRights\tIsInherited";
textBox1.Text += ace +"\r\n";
FileSecurity security = File.GetAccessControl(filePath);
AuthorizationRuleCollection rules = security.GetAccessRules(true, true, typeof(NTAccount));
for (int i = 0; i < rules.Count; i++ ) {
FileSystemAccessRule fsar = (FileSystemAccessRule)rules[i];
ace = fsar.AccessControlType
+ "\t" + (fsar.IdentityReference as NTAccount).Value
+ "\t" + fsar.FileSystemRights.ToString()
+ "\t" + fsar.IsInherited.ToString();
textBox1.Text += ace + "\r\n";
}
}
foreachを用いた場合のコード
/*
// usingに以下を追加
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
*/
private void button1_Click(object sender, EventArgs e)
{
string filePath = @"C:\develop\text.txt";
string ace = "AccessControlType\tAccountName\tFileSystemRights\tIsInherited";
textBox1.Text += ace +"\r\n";
FileSecurity security = File.GetAccessControl(filePath);
foreach (FileSystemAccessRule rule in security.GetAccessRules(true, true, typeof(NTAccount))) {
ace = rule.AccessControlType
+ "\t" + (rule.IdentityReference as NTAccount).Value
+ "\t" + rule.FileSystemRights.ToString()
+ "\t" + rule.IsInherited.ToString();
textBox1.Text += ace +"\r\n";
}
}