曾经我的电脑使用一块128G的SSD来放系统,程序和其他文件都在另一块机械硬盘里,后来换上了960G的SSD之后光是放了个系统和装了一些软件依然还空着500多G,所以想着还是把原本的80多G软件全都移到SSD里去吧。
那么问题来了,这些软件的安装位置全是D盘,如果直接把程序移走那会出很多问题,这就意味着我必须要确保把它们移到SSD后依然属于D盘,然后就想到了两个常规方案:分区,挂vhd。
首先是分区,在我用了macos和一些linux后越来越觉得分区这个操作很多余,完全可以使用文件夹来取代分区。主要问题在于分区会产生额外的空间限制,所以慢慢地我开始不再给自己的硬盘分区了,于是这个方案排除,但如果没有其它选择,这个方案还是优于vhd的。
然后是vhd,考虑到性能损耗和文件碎片问题,直接就排除了,我也不想看到一个几十G大的vhd。
由于当时我已经把所有软件移到了`C:\files\Drivers\D` ,所以直接开始寻找是否有办法直接把目录挂在为一个驱动器。一查果然有,一般都是说用subst命令直接把目录挂在为驱动器,如`subst p: c:\poi` 就可以把c盘的poi目录挂在为p盘。但是这个方案在win10似乎有些bug,需要一些曲折的操作来实现,所以不太好使。然后继续找办法。
最后在某一篇文章里发现可以在注册表里直接加驱动器,位置是`\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices` ,打开到这个位置可以看到已经有一些映射设置了。
那篇文章里写了一个注册表文件,内容类似
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices] "P:"="\\??\\C:\\poi"
但是我试了一下发现并没有用,重启之后挂载出来了一个打了问号的驱动器,那么说明这个映射源并不存在,所以我这里的值不能这么写。
然后我参考了一下这个列表里的其它条目,感觉也许可以从`\DosDevices\` 下面直接进入驱动器号,所以改成了`\DosDevices\C:\files\Drivers\D` ,重启了一下果然挂载上了,现在这个目录会在开机时被挂载为D盘,并且由于属于同一个盘所以会和C盘显示同样的空间使用情况,有一个小问题就是这个盘没法修改卷标,所以也会和C盘显示一样的名字。挂载后的样子如下:
。
名字什么的无所谓了,好用就行。
另外这样挂载的驱动器没有回收站,但是可以去原始目录里删除文件,其实问题不大。
===========更新============
这个方法挂载的盘会在系统大版本更新的时候被重置,更新结束后映射会消失,需要重新设置,不建议用来映射存放程序的目录