C#でファイルのアクセス権を設定する
2010年 02月 23日
string file = "D:\\Shared\\Book1.xml";
string user = Environment.UserDomainName + "\\" + Environment.UserName;
FileSystemAccessRule fsaRule = new FileSystemAccessRule(
user, FileSystemRights.FullControl, AccessControlType.Allow);
bool hasMyAccessRight = false;
//既存のアクセス権を調べる
FileSecurity security = File.GetAccessControl(file);
foreach (FileSystemAccessRule rule in
security.GetAccessRules(true, true, typeof(NTAccount)))
{
if (((NTAccount)rule.IdentityReference).Value == user)
{
//すでにユーザーに関する権限があればループを抜ける。
hasMyAccessRight = true;
break;
}
}
//アクセス権の設定
if (hasMyAccessRight)
{
security.SetAccessRule(fsaRule);
}
else
{
security.AddAccessRule(fsaRule);
}
//変更したアクセス権をファイルに設定
File.SetAccessControl(file, security);
//グループのチェックをしていないので片手落ち
---7/10
すでに設定してあるアクセス権の置き換えを行うには、まず継承の保護を解除しなければならない。(SetAccessRuleProtectionメソッドを使う。)
アクセス権は継承の仕組みがややこしいので別途ページを作った。
C#でファイルアクセス権限の付与