我尝试过filesystemwatcher - 但是监视对文件的访问没有用。有没有这样做的界面?
答案 0 :(得分:1)
抓住UnauthorizedAccessException
,如果抓住,则您无权访问。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
对于简单审核,您可以使用审核策略。如果您想在实际访问发生之前采取行动(或阻止基于某些复杂逻辑的访问),那么您需要使用文件系统过滤器驱动程序。编写自己的(内核模式驱动程序编写技巧和需要几个月的工作)或使用我们的CallbackFilter产品,它提供驱动程序并允许您在用户模式(包括.NET)中编写业务逻辑。