`\\?\` 是 **Windows 特有的“长路径前缀”(long-path prefix)**,正式名称叫 **UNC 扩展路径(Extended-Length Path)**。
### 作用
- **突破 260 字符的传统 MAX_PATH 限制**
Windows 默认路径限制为 **260 字符**(含结尾 `\0`)。
加上 `\\?\` 后,路径长度可扩展到 **约 32,767 字符**。
- **禁止使用相对路径**
必须以 **绝对路径** 形式出现,且 **不能包含 `.` 或 `..`**。
- **禁用路径规范化**
路径中的 `/`、`\`、大小写等 **原样传递**,不再被 Win32 子系统转换或解析。
---
### 示例对比
| 写法 | 含义 | 是否受 260 字符限制 |
|---|---|---|
| `C:\very\long\...\file.txt` | 传统路径 | ✅ 受限 |
| `\\?\C:\very\long\...\file.txt` | 扩展路径 | ❌ 不受限 |
---
### 在 Elasticsearch 中的场景
当 Elasticsearch 启动 x-pack-ml 模块时,**controller.exe** 所在路径较长,官方启动脚本会 **自动加上 `\\?\` 前缀**,确保在极深目录或超长路径下也能正常加载,避免 **“路径过长”** 导致的 `ERROR_PATH_NOT_FOUND` 或 `CreateProcess` 失败。
---
### 一句话总结
> **`\\?\` 是 Windows 的“长路径开关”,加在绝对路径前可突破 260 字符限制,Elasticsearch 用它来确保深层路径下的 native controller 能被正常启动。**