2012-04-16 2 views
4

일부 폴더 사용 권한 (읽기 전용으로 설정)을 ReadWriteExecute로 변경하고 싶습니다! 폴더의 사용 권한 변경

나는이 코드를 작성하지만, 폴더 권한은 여전히 ​​읽기 전용 :

나는이 오류 메시지가 얻을 Directory.Delete(folder, true)으로이 디렉토리를 삭제하려면
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); 
} 

다음에

"액세스를 경로 '항목'이 거부되었습니다. "

물론 사용 권한은 여전히 ​​읽기 전용입니다. 여기서 뭐가 잘못 됐니?

감사합니다.

답변

3

이 같은 시도 할 수 이 기존에 추가하기 compound assignment 연산자와 비트 연산자 &를 사용

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

은 역 속성을 속성 FileAttributes.ReadOnly

+0

같은 오류 (~는 NOT 비트이기 때문에)은 . 'entries'경로는 폴더에있는 파일입니다. 아마도 재귀 적으로 사용 권한을 변경해야합니까?! (하지만 읽기 전용 플래그가 여전히 루트 폴더로 설정된 이유는 모르겠다.) – 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