2

アプリで既定の保存パスを設定するためにユーザーが選択できるフォルダーを制限したいと考えています。アクセス権を確認し、ユーザーのオプションを制限するか、ユーザーが選択した後にエラーを表示できるクラスまたはメソッドはありますか? FileSystemSecurity.AccessRightType は可能ですか?

4

1 に答える 1

1

はかなり閉じたコントロールなのでFolderBrowserDialog(モーダル ダイアログを開き、機能を実行し、ユーザーが何を選択したかを知らせてくれます)、ユーザーが選択または表示できるものを傍受できる可能性は低いと思います。もちろん、いつでも独自のカスタム コントロールを作成できます ;)

フォルダにアクセスできるかどうかのテストについて

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;
  }
}

UserHasAccess関数の内容は、この他の StackOverflow questionから取得したことに注意してください。

于 2012-09-14T14:50:20.163 に答える