小编Wol*_*odx的帖子

从网络共享中删除长路径太长的文件夹

我正在尝试使用 C# 删除网络上共享位置中的文件夹。有些文件夹路径太长,Windows 无法处理。我为此尝试了多种选择。我发现最好的方法是创建一个 FileSystemObject,将 \\?\ 添加到路径中,然后在要删除的路径上调用 DeleteFolder,这适用于我的本地计算机上的太长路径,因为我映射了 C 等驱动器: 和 G: 等,但是当我尝试在网络共享文件夹上使用它时,我得到 HRESULT: 0x800A004C (CTL_E_PATHNOTFOUND) 或值不在预期范围内。

以下是我的代码:

private static void DeletePathWithLongFileNames(string path)
    {
        string tmpPath = @"\\?\" + path;
        FileSystemObject fso = new FileSystemObject();
        fso.DeleteFolder(tmpPath, true);
    }
Run Code Online (Sandbox Code Playgroud)

举例来说,网络+共享文件夹是 \\myServer\mySharedFolder\folder1\etc\etc,这将是我发送到删除函数的路径字符串,然后 tmpPath 显示为“\\\\?\ \\\\myServer\\mySharedFolder\\folder1\\etc\\etc"

我对UNC了解不多,所以我不知道这是否是错误的。我很确定我的 tmpPath 变量有问题,但我又不确定。也许这是一个语法错误,但我一生都无法弄清楚出了什么问题。先谢谢您的帮助

编辑:我相信我已经找到了答案,我现在正在测试它。到目前为止,它对我有用。如果我在以下路径 \\?\UNC\server\sharedFolder\folder1\etc\etc 上运行 DeleteFolder 方法,这似乎有效。现在我只需要弄清楚如何删除所有这些额外的斜杠。

编辑2:这确实有效,在网络上的共享文件夹上进行了测试。这只是因为我不理解 UNC 路径。

c# filesystemobject

7
推荐指数
1
解决办法
802
查看次数

标签 统计

c# ×1

filesystemobject ×1