2012-04-16 23 views
4

いくつかのフォルダのアクセス許可を(Read-Onlyに設定して)ReadWriteExecuteに変更したい!フォルダのアクセス許可を変更する

私はこのコードを書いたが、フォルダのアクセス許可は読み取り専用、まだです:

private void ChangePermissions(string folder) 
{ 
    string userName = Environment.UserName; 

    FileSystemAccessRule accessRule = new FileSystemAccessRule(userName, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit 
       | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow); 

    DirectoryInfo directoryInfo = new DirectoryInfo(folder); 
    DirectorySecurity directorySec = directoryInfo.GetAccessControl(); 


    directorySec.AddAccessRule(accessRule); 
    directoryInfo.SetAccessControl(directorySec); 
} 

私はDirectory.Delete(folder, true)で、このディレクトリを削除したい場合は、私はこのエラーメッセージを取得:

「へのアクセスをパス 'エントリ'が拒否されました。

もちろん、権限は読み取り専用です。ここで何が間違っていますか?

ありがとうございました!

答えて

3

あなたはこのような何かを試みることができる:これは、既存に追加するcompound assignment演算子とビット単位の演算子&を使用しています

var dirInfo = new DirectoryInfo(folder); 
dirInfo.Attributes &= ~FileAttributes.ReadOnly; 

を(~はビット単位ではありませんので)プロパティに逆属性FileAttributes.ReadOnly

+0

同じエラーの。 'entries'パスはフォルダ内のファイルです。再帰的にパーミッションを変更する必要がありますか? (でも、なぜRead-Onlyフラグがまだルートフォルダに設定されているのかわかりません) – leon22

+1

ファイル権限を再帰的に変更する必要がある場合は、このSOの投稿が役に立ちます:http://stackoverflow.com/questions/191399/how-それぞれのフォルダ内ファイルを使用するための読み取り専用ファイル属性を変更する – Robbie

+0

Thx。 http://stackoverflow.com/questions/191399/how-do-i-change-the-read-only-file-attribute-for-each-file-in-a-folder-using-cからのコードでうまくいった! – leon22

関連する問題