在 Windows 上将目录永久性映射到盘符

最近一位朋友在安装 Matlab 的时候,由于 OEM 分区方式不合理,系统分区空间不足,而数据分区空间又过于充足,于是请我帮助她合并分区。在合并分区后为了保持之前的路径仍然能够正常访问,我准备实践一下之前就听说过的将目录映射到盘符的操作。

在 Windows 中有一个叫做 subst.exe 的程序,它可以将目录映射到盘符。用法如下:
subst.exe 列出当前所有的虚拟盘符
subst.exe D: C:\dataC:\Data 映射到 D:
subst.exe D: /D 删除虚拟盘符 D:

subst.exe 的映射仅在当前 session 有效,例如 UAC 提升的 shell 中无法访问在 UAC 提升之前建立的映射关系,同时让 subst.exe 开机启动的过程中,explorer.exe 建立图标缓存时也无法访问对应的图标导致图标空白。

经过查阅,在 psubst 的实现看到一个解决方法,抄录翻译如下:

建立一个 reg 文件,内容填充如下:

REGEDIT4 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] 
"D:"="\\??\\C:\\Data"

这里将 D: 换成需要的盘符,将 C:\\Data 换成对应的路径即可,注意在双引号中需要将 \ 转义为 \\。然后将这个 reg 文件导入注册表即可实现。
也可以在注册表中前往 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices 手动建立。手动建立时不需要转义 \。同时如果需要删除映射关系,也需要前往这里删除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注