我想限制一个人可以选择在我的应用程序中设置其默认保存路径的文件夹。是否有一个类或方法允许我检查访问权限,或者限制用户的选择,或者在用户选择后显示错误。 FileSystemSecurity.AccessRightType是否可能?

最佳答案

由于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获得的。

09-04 02:02