【问题标题】:C# - Check Folder Write Permissions On UNC File Share (Winforms)C# - 检查 UNC 文件共享 (Winforms) 上的文件夹写入权限
【发布时间】:2018-06-10 07:18:53
【问题描述】:

我正在尝试在将文件复制到其中之前检查 NAS 文件共享上的 UNC 文件路径。我知道我可能会在实际副本本身上遇到错误(因为我目前没有在那里写的权限),但我还想在程序启动时事先检查以让用户知道是否或他们不能在尝试这样做之前将文件复制到那里。

我的问题是这总是返回 true,当我确定我在那里没有写入权限时,因为我无法在文件资源管理器中复制和粘贴文件,而 C# 中的实际 File.Copy 返回“访问路径 '\nascharf06\uas\to_be_processed\Andy\A.jpg' 被拒绝”。

为什么这总是返回 true?

string folder = @"\\nascharf06\uas\to_be_processed\Andy";
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Write, folder);
        try
        {
            f2.Demand();
            return true;
        }
        catch
        {
            return false;
        }

【问题讨论】:

    标签: c# winforms file file-permissions


    【解决方案1】:

    检查FileIOPermissionAcces.PathDiscovery & FileIOPermissionAccess.Read & FileIOPermissionAccess.Write - 您的访问可能会被阻止,因为您甚至无法访问那里阅读。

    如果这没有帮助,您可以使用包裹在 try - catch 中的单个“虚拟写入”来确保您可以写入。如果您没有删除权限,则可能无法删除您的虚拟写入文件。

    这也可能对您有所帮助:how-can-you-easily-check-if-access-is-denied-for-a-file-in-net(SO- 类似问题的答案)

    【讨论】:

    • 我确实可以通过 C# 或文件资源管理器访问那里。我无权在那里写入和复制文件,现在这是正确的。我的问题是我原始帖子中的函数返回true,就好像我可以在那里写一样,但这应该返回false,因为我不能通过文件资源管理器的C#复制文件。我想知道为什么这会返回 true 而不是应该返回的 false。
    • @Andy - 只是为了咯咯笑,从那里拿一个文件并保存在本地。修改它并复制回来。我的猜测是您有 WRITE 但没有 CREATE 权限 - 保留一份未修改的副本,以便您可以将其复制到修改后的副本上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多