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

时间:2009-07-08 12:13:19

标签: .net filesystems

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

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

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

1 个答案:

答案 0 :(得分:2)

听起来你正在寻找的是FileIOPermission(在System.Security.Permissions中)类,它允许你在继续之前检查你是否有权限...那说,你仍然检测到你<通过捕获异常,em>不拥有权限;你应该仍然期望在实际的写操作期间出现异常的可能性。

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