在 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 手动建立。手动建立时不需要转义 \。同时如果需要删除映射关系,也需要前往这里删除。

6 Replies to “在 Windows 上将目录永久性映射到盘符”

  1. 勘误一下
    代码块最后一行
    “D:”=” ?? C: Data”
    应该是
    “D:”=”\\??\\C:\\Data\\”(看原文是这样的,但我并未实践这个方法,而是在注册表编辑器中操作的)
    此外如果是在注册表编辑器中,目录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices下
    新建字符串值,名称为”D:”, 值为”\??\C:\Data\”(双引号里的内容,问号就是原封不动抄过去的)
    完成后需要重启计算机才会生效

    1. 用共享文件夹的方法记忆量小,但是其实步骤反而更多的,要依次启用共享,设置权限,再映射驱动器,
      并且可能把不想暴露在网络的文件夹暴露出去。

发表回复

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