确定文件是否在.NET中具有写访问权限

我创建了一个软件产品,其作用类似于Apache mod_rewrite,但对于.NET.其中一个要求是支持RewriteLog命令,该命令设置记录路径.这很好,但是我遇到的最大问题是用户设置了IIS用户无权访问的路径.

我想通过检查路径的权限来确保写入权限可用,从而向用户抛出缺少写入权限的异常.

我已经发现我可以尝试将文件写入硬盘进行测试.但这看起来很糟糕,我想找到一种非黑客的做法吗?有人知道我可以调用的一些API是中等信任安全来检查写访问的文件权限吗?

最佳答案 听起来你正在寻找的是
FileIOPermission(在System.Security.Permissions中)类,它允许你在继续之前检查你是否有权限…那说,你仍然通过捕获一个来检测你没有权限例外;并且您仍然应该期望在实际写入操作期间出现异常的可能性.

using System.Security.Permissions;
...
public void CheckForWriteRights(string path)
{
    FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Write, path);
    try
    {
        permission.Demand();
        // the application does have Write rights to the path
    }
    catch
    {
        // the application doesn't have rights to the path
    }
}
点赞