SystemRoot 和 C:\Windows 的区别

Difference between SystemRoot and C:\Windows

在内核模式下,\SytemRoot\??\C:\Windows 产生相同的结果吗?

例如,如果我想访问Windows目录下一个名为test.txt的文件,这两个选项之间应该使用什么?

如果您想显式访问目录 C:\Windows 中的文件 test.txt按名称,您可以使用 \??\C:\Windows\test.txt。但是,这很可能不是您想要的(除非您从其他地方获得了包括 C:\Windows 在内的完整路径,并且只是在前面加上 \??\),因为如果 Windows 安装在其他地方,它将失败,因为示例 \??\D:\WINNT(或 \??\X:\Windows 在恢复环境的情况下)。

因此,如果您只想访问当前 Windows 安装所在目录中的文件 test.txt,即通过 角色 目录作为系统根目录,不管它的绝对路径如何,你都会使用\SystemRoot\test.txt。这通常是您想要的,因为 \SystemRoot 是一个符号链接,它始终指向正确的 Windows 安装目录。如果分区的驱动器盘符(即符号链接 \??\C:)在运行时意外取消分配或更改(或尚未开始分配),这甚至有效,因为它没有通过 [=21] 中的符号链接=] 类似于 \??\C:\Windows 但它直接指向设备路径,如 \Device\Harddisk0\Partition1\Windows.