- PR -

継承されたアクセス権を削除する方法

1
投稿者投稿内容
キミドリガメ
会議室デビュー日: 2007/04/16
投稿数: 2
投稿日時: 2007-04-16 21:58
いつも参考にさせていただいています。
VS.NET2005 ASP.NET C#
WEBサーバー:Win2003 Standard Edition SP1
IIS:6.0
で開発を行っています。

行いたいこと
すでにあるファイル、フォルダのアクセス権の継承を外し、別途独自のアクセス権を付ける

新規にフォルダを作る場合、下記の方法で継承が外れたものが作成できました。
DirectorySecurity dSecurity = new DirectorySecurity();
dSecurity.AddAccessRule(付けたいアクセス権);
Directory.CreateDirectory(対象フォルダ, dSecurity);・・・@

すでにあるフォルダの場合
@の部分を
Directory.SetAccessControl(対象フォルダ, dSecurity);
としてみたところ、
継承されたアクセス権がついたままの状態でした。

別の方法として
DirectorySecurity dSecurity = DirectorySecurity(対象フォルダ);
dSecurity.RemoveAccessRule(継承されたアクセス権);・・・A
Directory.CreateDirectory(対象フォルダ, dSecurity);
等、行いましたが継承されたアクセス権はついたままで、
Aの後、dSecurityの中身を見てみたところ
消した筈のアクセス権が消えていませんでした。

継承されたアクセス権を外す方法について
どなたかご教授いただけないでしょうか。
よろしくお願いいたします。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-17 03:41
この手の操作 .NET でやったこと無いんですが、ACL の仕様から考えてこれをいじるんじゃないかな?

ObjectSecurity.SetAccessRuleProtection
_________________
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-04-17 10:53
DirectorySecurity クラス
使用例の通りにやればよろしいのではないでしょうか。

DirectorySecurityにAddAccessRuleやRemoveAccessRuleをしてあげてから、そのDirectorySecurityをDirectoryInfoにSetAccessControlしてあげるって手順。

---追記---
あれ?SetAccessControlやったけどダメだったってことですかね。すみません。文章よく読んでなかったです。ごめんなさい。
継承を断つにはちゃっぴさんの仰るとおり SetAccessRuleProtection ですね。

[ メッセージ編集済み 編集者: かめたろ 編集日時 2007-04-17 11:24 ]
キミドリガメ
会議室デビュー日: 2007/04/16
投稿数: 2
投稿日時: 2007-04-17 20:14
ちゃっぴさん
かめたろさん

返答ありがとうございます。
SetAccessRuleProtection(true,false);
で継承されたアクセス権を削除することが出来ました。
1

スキルアップ/キャリアアップ(JOB@IT)