在使用 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
命令:
1 |
> subst c: f:/ |
此时发现 "我的电脑" 中果然出现了 C 盘且和 F 盘一毛一样。至此问题得到解决。
3. 改进
这种方法的缺点就是,该命令在重启后会失效。所以需要在启动时自动运行。我选择将其加入到 Windows 计划任务库里
附:subst 命令
- 命令基本格式
> subst [盘符] [路径]
- 查看所有映射
> subst
- 解除某个映射
> subst [盘符] /D