首页 > 解决方案 > SystemRoot 和 C:\Windows 之间的区别

问题描述

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

例如,如果我想访问目录中命名test.txtWindows文件,那么在这两个选项之间使用什么是正确的?

标签: cwindowsdriverkernel-mode

解决方案


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

因此,如果您只想访问test.txt当前 Windows 安装所在目录中的文件,即作为系统根目录的目录,无论其绝对路径如何,您都可以使用\SystemRoot\test.txt. 这通常是您想要的,因为\SystemRoot它是一个始终指向正确 Windows 安装目录的符号链接。如果分区的驱动器号(即符号链接\??\C:)在运行时意外未分配或更改(或尚未开始分配),这甚至可以工作,因为它没有通过符号链接,\??而是\??\C:\Windows直接指向一个设备路径如\Device\Harddisk0\Partition1\Windows.


推荐阅读