代码之家  ›  专栏  ›  技术社区  ›  Dave

检查是否可以写入FileShare,而无需实际写入

  •  0
  • Dave  · 技术社区  · 7 年前

    我试图实现的是,能够检查我们是否有对文件共享位置的写入权限,但实际上不需要向其写入任何内容。

    我知道,检查您是否可以向某个位置写信的最简单、可能也是最可靠的方法就是直接向它写信。然而,这在这里并不合适。

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

    所以我在这里,想知道是否有一种方法可以检查我是否可以向某个位置写信,而不必实际向它写信。

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Baaleos    7 年前
    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

    在这个场景中,我假设文件共享的行为类似于典型的Windows目录。 据我所知,Windows在后台做的所有工作都是将网络共享视为目录,它应该使用相同的权限系统等。