检查是否可以写入FileShare而不实际写入

时间:2018-02-19 17:24:03

标签: c# file-permissions fileshare

我想要实现的是能够检查我们是否具有对文件共享位置的写访问权限,但实际上没有写任何内容。

我知道检查你的最简单也可能是最可靠的方法是写一个位置就是写它。但是,这不适合。

情景就是这样。有一个文件共享,我们的系统生成的文件被写入。在另一端的某个地方,我们的客户端正在拾取写入该文件夹的任何内容并将其移动到他们想要的地方。每隔10分钟左右,我们检查一下我们是否可以访问共享,作为系统监控的一部分。在过去,我们通过编写一个空文本文件来完成此操作。但是现在他们正在使用这个自动系统将文件放在那里时移出文件,这是不合适的。

所以我在这里,想知道是否有办法检查我是否可以写入某个位置而无需实际写入。

我们尝试访问的共享是网络位置,需要凭据才能访问它。

我尝试过使用FileIOPermission,但这表示即使我无法访问该共享,我也有权限(因为我没有登录)所以当我尝试实际写入时,我得到一个例外

1 个答案:

答案 0 :(得分:1)

private bool hasWriteAccessToFolder(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 = Directory.GetAccessControl(folderPath);
        return true;
    }
    catch (UnauthorizedAccessException)
    {
        return false;
    }
}

借鉴:C# Test if user has write access to a folder

在这种情况下,我假设FileShare的行为与典型的Windows目录类似。 据我所知 - Windows在后台将所有工作都视为目录,并且应该使用相同的权限系统等。