0

我已经尝试过 filesystemwatcher - 但是监视对文件的访问是没有用的。有没有接口可以做到这一点?

4

3 回答 3

1

抓住UnauthorizedAccessException,如果被抓住,那么你无权访问。

于 2012-10-17T07:58:49.153 回答
0

对于简单的审计,您可以使用审计策略。如果您想在实际访问发生之前采取行动(或基于一些复杂的逻辑阻止访问)m,那么您需要使用文件系统过滤器驱动程序。编写您自己的(内核模式驱动程序编写技能和几个月的工作)或使用我们的 CallbackFilter 产品,该产品提供驱动程序并允许您在包括 .NET 在内的用户模式下编写业务逻辑。

于 2012-10-17T08:57:08.577 回答
0

您可以阅读有关FileIOPermission课程的更多信息。

或使用这样的自定义方法:

public static bool HasWritePermissionOnDir(string path)
{
  var writeAllow = false;
  var writeDeny = false;
  var accessControlList = Directory.GetAccessControl(path);
  if(accessControlList == null)
     return false;
  var accessRules = accessControlList.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
  if(accessRules ==null)
   return false;

  foreach (FileSystemAccessRule rule in accessRules)
  {
      if ((FileSystemRights.Write & rule.FileSystemRights) != FileSystemRights.Write) 
        continue;

      if (rule.AccessControlType == AccessControlType.Allow)
        writeAllow = true;
      else if (rule.AccessControlType == AccessControlType.Deny)
        writeDeny = true;
  }

  return writeAllow && !writeDeny;
}
于 2012-10-17T07:29:46.793 回答