# 符号链接、目录联接与长路径限制

> 符号链接、目录联接与硬链接的区别、各自适用场景，以及怎么越过 260 字符路径限制。

**测试环境**

- 版本号: 26300.9457 / 26100.33650
- 版本: Pro (26H2) / Server
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

三种链接，行为差别很大：

| 类型 | 命令 | 指向 | 目标移动后 |
|---|---|---|---|
| **符号链接**（文件/目录） | `New-Item -ItemType SymbolicLink` | 路径字符串 | 断链 |
| **目录联接**（仅目录） | `New-Item -ItemType Junction` | 本地卷路径 | 跟随目标 |
| **硬链接**（仅文件） | `New-Item -ItemType HardLink` | 同一份数据 | 它本身就是文件 |

要挪走一个软件坚持要放在固定路径的文件夹，用**目录联接**。需要透明指针且能接受路径依赖，用**符号链接**。硬链接几乎不用——它是同一个文件的两个名字。

## 目录联接为什么还有用

很多软件把路径写死：`C:\ProgramData\Vendor`、`C:\Users\Public\Documents`、游戏存档目录。你改不了应用，又不希望数据放在系统盘。

```powershell
Robocopy "C:\ProgramData\Vendor" "D:\Data\Vendor" /E /MOVE
New-Item -ItemType Junction -Path "C:\ProgramData\Vendor" -Target "D:\Data\Vendor"
```

跨卷搬运时加 `/COPYALL` 可保留 ACL；普通 `/MOVE` 在某些配置下会丢掉显式权限。

> **警告: 不要对联接系统文件夹**
>
> `C:\Windows`、`C:\Program Files`、`C:\Users` 不是安全的联接目标。Windows 服务、WinRE 与更新回滚都假设真实路径。挪用户数据与应用数据，别挪系统。

## 260 字符限制

经典 `MAX_PATH` 是 260 字符。Windows 10 1607+ 可以突破，但**需要两个条件同时满足**：策略已启用，且应用通过清单声明支持。

- 启用：`HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled = 1`（或组策略）。
- 未声明长路径感知的程序仍然在 260 处失败。
- 资源管理器、`cmd.exe` 与部分备份工具处理方式不同。

总是有效的绕法：

- **缩短根路径**——`D:\p\` 而不是 `D:\Projects\2026\Client Name\...`
- 对接受它的 API 使用 `\\?\` 前缀（`\\?\D:\very\long\path`）。
- OneDrive/SharePoint 路径要浅——同步路径会放大这个限制。

```powershell
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name LongPathsEnabled
```

## 链接会弄坏什么

| 工具 | 行为 |
|---|---|
| 备份/同步工具 | 可能跟随链接（数据翻倍）或跳过 |
| `robocopy` | `/SL` 跟随符号链接，`/XJ` 跳过目录联接 |
| 杀毒软件 | 通常没问题，偶尔在循环链接上打转 |
| 空间统计工具 | 重复计算或直接拒绝 |

一定要告诉备份工具怎么处理链接，否则要么漏数据，要么把同一份 500GB 备份两遍。

## 相关

- [Windows 11 资源管理器](https://winbook.fyi/zh/windows/files/explorer/)
- [存储感知与磁盘清理](https://winbook.fyi/zh/windows/files/storage-sense/)
- [WSL2 与文件性能](https://winbook.fyi/zh/windows/dev/wsl2/)

## 实验室边界

E1。链接语义与长路径策略有微软文档依据。本文没有在实验室虚拟机上创建链接。

## 来源

- [Microsoft Learn — 硬链接与目录联接](https://learn.microsoft.com/zh-cn/windows/win32/fileio/hard-links-and-junctions)
- [Microsoft Learn — 最大文件路径限制](https://learn.microsoft.com/zh-cn/windows/win32/fileio/maximum-file-path-limitation)
- [Microsoft Learn — Windows Shell](https://learn.microsoft.com/zh-cn/windows/win32/shell/)

---

来源页面: https://winbook.fyi/zh/windows/files/symlinks-long-paths/
