2012-09-14 3 views
2

내 앱에서 사용자가 기본 저장 경로를 설정하도록 선택할 수있는 폴더를 제한하려고합니다. 액세스 권한을 확인하고 사용자 옵션을 제한하거나 선택을 한 후에 오류를 표시 할 수있는 클래스 또는 메소드가 있습니까? FileSystemSecurity.AccessRightType은 가능성이 있습니까?FolderBrowserDialog를 사용하여 특정 폴더에 대한 액세스 제한

+0

사용자가 액세스 할 수있는 원하는 위치를 선택하게하는 것이 좋지 않겠습니까? 결국 컴퓨터입니다. 꼭 당신이 합당하다고 생각하는 불이행을 제공하십시오. 그러나 최종 결론을 내리게하십시오. – DavidK

+0

사용자가 액세스 권한이없는 폴더를 선택하지 않고 처음부터 전혀 표시하지 않도록할까요? –

+0

@DavidK 사용자가 기본 저장 경로를 설정할 수 있도록 허용해야하지만 소프트웨어는 학생이 특정 폴더에 대한 액세스를 제한 한 학교 및 대학 (예 : 현재있는 폴더)과 같이 구현되어야합니다. –

답변

1

FolderBrowserDialog은 다소 닫힌 컨트롤이므로 모달 대화 상자가 열리고 사용자가 무엇을 선택했는지 알 수 있습니다. 사용자가 무엇을 훔쳐 가지 않을 것이라고 생각하지 않습니다. 선택하거나 볼 수 있습니다. 그들은 내가 UserHasAccess 기능 물건이 다른 StackOverflow의 question로부터 얻은 점에 유의해야한다 폴더

private void OnHandlingSomeEvent(object sender, EventArgs e) 
{ 
    DialogResult result = folderBrowserDialog1.ShowDialog(); 
    if(result == DialogResult.OK) 
    { 
     String folderPath = folderBrowserDialog1.SelectedPath; 
     if (UserHasAccess(folderPath)) 
     { 
     // yay! you'd obviously do something for the else part here too... 
     } 
    } 
} 

private bool UserHasAccess(String folderPath) 
{ 
    try 
    { 
    // Attempt to get a list of security permissions from the folder. 
    // This will raise an exception if the path is read only or do not have access to view the permissions. 
    System.Security.AccessControl.DirectorySecurity ds = 
     System.IO.Directory.GetAccessControl(folderPath); 
    return true; 
    } 
    catch (UnauthorizedAccessException) 
    { 
    return false; 
    } 
} 

에 액세스 할 수있는 경우 테스트 용으로)

을, 당신은 항상 물론, 사용자 정의 컨트롤을 만들 수 있습니다.

+1

고맙습니다. 이것은 멋지다. 메시지를 표시하고 기본값으로 재설정 할 수 있습니다. 커스텀 컨트롤에 관해서는 ... 아마도 1, 2 년 안에. –

+0

이것은 실제로 또 다른 문제를 해결했습니다. 사람들이 디렉토리 나 파일을 업로드하려고 할 때 나는 같은 방법을 호출하여 허용할지 여부를 확인할 수 있습니다. 다시 한번 감사드립니다. –

관련 문제