c - SystemRoot 和 C:\Windows 之间的区别
问题描述
在内核模式下,做\SytemRoot
和\??\C:\Windows
产生相同的结果?
例如,如果我想访问目录中命名test.txt
的Windows
文件,那么在这两个选项之间使用什么是正确的?
解决方案
如果您想通过 name显式访问test.txt
目录中的文件,您可以使用. 但是,这很可能不是您想要的(除非您获得了完整路径,包括from others 并且只是 prepend ),因为如果 Windows 安装在其他地方(或在恢复环境的情况下),它将失败。C:\Windows
\??\C:\Windows\test.txt
C:\Windows
\??\
\??\D:\WINNT
\??\X:\Windows
因此,如果您只想访问test.txt
当前 Windows 安装所在目录中的文件,即作为系统根目录的目录,无论其绝对路径如何,您都可以使用\SystemRoot\test.txt
. 这通常是您想要的,因为\SystemRoot
它是一个始终指向正确 Windows 安装目录的符号链接。如果分区的驱动器号(即符号链接\??\C:
)在运行时意外未分配或更改(或尚未开始分配),这甚至可以工作,因为它没有通过符号链接,\??
而是\??\C:\Windows
直接指向一个设备路径如\Device\Harddisk0\Partition1\Windows
.
推荐阅读
- java - 由于递归规则调用,ANTLR3 错误规则具有非 LL(*) 决策
- python-3.x - 这个错误的原因是什么“/usr/bin/sudo: /usr/bin/sudo: 无法执行二进制文件”
- java - 创建休眠配置:未设置“hibernate.dialect”时,对 DialectResolutionInfo 的访问不能为空
- google-cloud-platform - Pubsub 消息缺少时间戳属性
- jquery - 如何在 jQuery 中创建验证
- powershell - 如何启动 .bat 文件以与 Powershell 分开运行(2pt 问题的 pt1)
- javascript - 如何优先考虑特定的 ajax 调用?
- c# - 通过 USB 端口进行简单的串行通信
- python-3.x - python:将excel转换为csv
- .net - 使用 TeamFoundationServer.Client 获取本地工作空间