存档

文章标签 ‘Windows’

Windows 如何修改系统盘符

2018/11/13 4,629

在使用 Win10 开发近 5 年的时间里,我填了各种各样的坑。最近终于受不了,将办公室里的开发机器的操作系统换回 Win7 。但是在重装 Win7 系统后,发现了一个问题:Win7 系统盘符并不是 C:/ 而是 F:/ 。这导致有些软件不能使用了。在网上找了一通后,找到如下办法可以将系统盘符换回 C:/ :
修改 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevice\DosDevices\F: 的键名为 \DosDevices\C:
重启以后,发现系统盘符果然改成了 C:/ 。然而,系统无法正常使用:无法加载用户配置文件、无法打开系统应用,甚至连资源管理器都无法打开!
这个时候如果想将注册表改回去,发现
无法打开 C:/windows/regedit.exe, 找不到指定文件
经过一通谷狗之后,有如下解决办法:

1. 恢复到之前的盘符

使用 PE 引导盘,进行系统后打开 regedit.exe ,但是这个时候修改HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices 是无效的,因为此时的注册表是 PE 系统的注册表,而不是 Win7 的注册表。应该想办法加载 Win7 的注册表,方法如下:
将鼠标定位在 HKEY_LOCAL_MACHINE\ 上,选择菜单 文件 -> 加载配置单元 , 在对话框中选择 F:\Windows\System32\config\SYSTEM ,在新加载的注册表项里找到 MountedDevices, 将 \DosDevices\C: 改加 \DosDevices\F: ,并重启。
因为 regedit.exe 只是注册表编辑器,真正的注册表文件存储在 F:\Windows\System32\config\SYSTEM 里。

2. 解决盘符的问题

在注册表里搜一下 F:/ ,发现实在太多了。这决定里通过修改盘符不能解决问题而只会引发更多的问题。冷静下来思考了一下,想到如果使用磁盘映射可能可以解决问题:
首先,查看是否有磁盘占用了 盘符 C,如果有,则改之。
然后,cmd 下使用 subst 命令:

此时发现 "我的电脑" 中果然出现了 C 盘且和 F 盘一毛一样。至此问题得到解决。

3. 改进

这种方法的缺点就是,该命令在重启后会失效。所以需要在启动时自动运行。我选择将其加入到 Windows 计划任务库里

附:subst 命令

  • 命令基本格式 > subst [盘符] [路径]
  • 查看所有映射 > subst
  • 解除某个映射 > subst [盘符] /D