#unc #canonicalize #realpath #windows #deunc

dunce

将 Windows 路径转换为最兼容的格式,尽可能避免使用 UNC

5 个稳定版本

1.0.5 2024 年 8 月 4 日
1.0.4 2023 年 4 月 19 日
1.0.3 2022 年 10 月 6 日
1.0.2 2021 年 6 月 8 日
0.1.0 2017 年 11 月 22 日

#13 in 文件系统

Download history 292285/week @ 2024-05-04 311319/week @ 2024-05-11 301115/week @ 2024-05-18 310039/week @ 2024-05-25 331286/week @ 2024-06-01 340981/week @ 2024-06-08 318364/week @ 2024-06-15 331200/week @ 2024-06-22 318386/week @ 2024-06-29 340533/week @ 2024-07-06 346183/week @ 2024-07-13 401470/week @ 2024-07-20 406172/week @ 2024-07-27 457294/week @ 2024-08-03 474832/week @ 2024-08-10 416370/week @ 2024-08-17

1,821,202 每月下载量
用于 2,196 个 Crates (258 直接)

CC0-1.0 OR MIT-0 OR Apache-2.0

15KB
252

Dunce (de-UNC)

在 Windows 中,常规路径 (C:\foo) 被所有程序支持,但为了与 MS-DOS 的向后兼容性,有许多奇特的限制。还有 Windows NT UNC 路径 (\\?\C:\foo),它们更健壮,有更少的陷阱,但很少被 Windows 程序支持——即使是微软自己的也不例外!

此 crate 在可能的情况下将 Windows UNC 路径转换为 MS-DOS 兼容的格式,但当无法以更简单的方式明确表达时,将保留 UNC 路径。这允许旧程序访问它们可以访问的所有路径,并且不会破坏任何 UNC 感知程序的路径。

例如,\\?\C:\Windows 将转换为 C:\Windows,但 \\?\C:\COM 将保持不变,因为它包含一个保留的文件名。

Rust 中最糟糕的 UNC 违规者是 fs::canonicalize() 函数。此 crate 提供了一个直接替换,返回您期望的路径。

在非 Windows 平台上,这些函数将路径保持不变,因此可以在所有平台上无条件地使用它们。

此 crate 对 UNC 路径的处理比无条件删除 \\ 前缀更安全,因为天真地删除 UNC 路径并更改主机名会变为相对目录路径。还有其他规范化规则、特殊字符和长度限制,这些都可能改变路径的含义。

解析基于 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

无运行时依赖