笔记本自带的win11的C盘满了,但是我想装vs,只能选择腾出空间。我一开始把磁盘其他空间分给了其他系统,只给C盘留了100G,事实证明不太够,之前吸取过教训,win10或win11的C盘给100G是不够的。我一开始将C:\Program Files和(x86)移动到了其他盘,然后弄软连接,注册表也改了。看起来没啥毛病,但是装vs的时候,报错:
An error occurred while attempting to create the directory: C:\Program Files (x86)\Common Files
无奈之下把C:\Program Files移回来,选择将C盘整个迁移到大一倍的磁盘中。做这种事我也不是第一次,轻车熟路了,这次就记下来,希望帮到需要的人。

目录
第零步:事先的准备
1. 首先得有足够空间的磁盘分区,我就从一个2T的分区中分出200G来了
2. 将所有磁盘的盘符记下来,最好截个图。因为迁移完了进系统,盘符会乱掉,R盘可能变了E盘,得将其恢复原样。
按win+x,点磁盘管理,可以方便地看到盘符

3. 准备一个PE启动U盘,大白菜或者其他pe都可以,有分区和修复引导功能的就行
第一步:分出一块足够大小的分区
使用DiskGenius软件即可,图形界面操作,不要太简单。建议进PE系统操作

右击某块磁盘的空闲空间大的分区,将其拆分,这里分出200G。(已经操作过,就不再重复做了)
(题外话:我的磁盘的分区表类型都是GUID格式的,习惯问题,总使用一样的配置不太容易出现出乎意料的错误)
第二步:克隆分区
右键C盘的分区,点克隆分区,选择刚刚分出来的空分区,再点开始即可。
经过十分钟,就克隆完毕了。
第三步:引导修复
我并不知道这一步是不是必要的,但是我习惯在装完系统(或类似的事)之后修复引导,确实能避免很多问题。
如果刚才几步没进PE,那么现在必须进了。关机,插入U盘,开机时狂按F2或F12或delete或.,总有一个键能进BIOS。然后选USB启动,进PE系统。不同的主板和PE,界面可能不一样,搞不定可以搜一下对应的型号。
我用的这个PE还有截图工具,挺方便的
打开DiskGenius,看看新克隆的分区的盘符是啥,这里是G:
找到引导修复的工具,一般PE都带有,我用了NTBootAutoFix工具
点击对应的盘符,再点开始修复即可。然后分区名会变成64WinXP,不影响使用,改回来即可。
重启后改为从磁盘启动,选择对应的磁盘,能进系统,看到C盘大了一圈就说明已经搞定了
第四步:盘符恢复
启动后可能会让你设置虚拟内存啥的,桌面图标很多也是空白,这是因为盘符乱了。这个时候将其改回来就行了。
点win+x,点 磁盘管理,在错误盘符的分区处右击点更改驱动器号和路径,将其按之前的截图改回来即可,当然C盘不用改
然后重启,就完了。可以格式化原来的C盘了。
附加:Linux多系统下,grub引导的修复
我本来是用Ubuntu下的grub引导的,这里也顺带讲一下怎么将grub中windows的引导项改成启动新的分区。参考了博客为双系统 Ubuntu grub启动项中添加Windows启动项_xiao_qs的博客-CSDN博客_grub添加win10
进入终端,输入命令修改文件
sudo chmod -x /etc/grub.d/30_os-prober
sudo vim /etc/grub.d/40_custom
或者在grub.d中搜menuentry,找到对应windows的那一项
将其改成:
menuentry 'win11' {
insmod part_gpt
insmod chain
insmod ntfs
set root='(hd1,gpt2)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
主要是改set root那句,其中(hd1,gpt2)说的是第1块(0数起)磁盘,第2个分区(对应我上面的分区截图),你是第0块就写hd1,第几个分区就写gpt几,写错了进不去系统的,多试几次就行了,我试了3次
然后更新grub
sudo update-grub
重启,选win11。如果说找不到引导,就将(hd1,gpt2)改一下。
之后安装vs就没出错了,这不比折腾软连接快?