基本上,问题是这样的:
我有一台 Windows 10 PC,配备 32 GB EMMC 存储空间,可以满足我发送邮件、进行基本打字等需求。有一个插槽可以插入 MicroSD 卡 ( D:\
),我使用 128GB 卡来存储文件。我在其中安装了所有程序,从 MS Office 到 Adobe Reader。由于 C:\ 驱动器只有 32GB,因此剩余空间不多(90% 已满)。因此,我想将 C:\Users 文件夹移动到 D:\ 驱动器以释放一些空间。
关于 C:\Users 文件夹的一些背景知识:
将所有隐藏文件显示出来后,其大小约为 5.5 GB,如下所示:
因此,如果我设法将其发送到另一个驱动器,之后我将在 C:\ 中获得大量空间。
因此,出于这个目的,我开始在 SuperUser 中搜索类似的东西。大多数问题都是几年前针对 Windows 7 或 8 提出的,因此如果您认为这个问题与其他问题完全重复,请考虑这种情况。
在我的探索中,我遇到的第一件事是这样的:
我已经使用这个技巧(涉及使用符号链接)将我的 MS Office 移动到外部 D:\ 驱动器,但我不确定此方法是否适用于移动 C:\Users。
我接下来遇到的事情是这样的:
将 c:\Users 文件夹永久移动到 Windows 7 中的另一个分区
但是,这个问题在 2011 年就被问过了,现在已经关闭了。这个问题涉及的操作系统是过时的 Windows 7。所以,我担心按照提供的解决方案操作后会遇到问题。
那么,有人能告诉我是否可以移动C:\Users
到D:\
驱动器以及如何进行吗?此外,移动C:\Users
到其他驱动器有哪些风险?而且,如果我将来升级当前的 Windows 10 版本,这会产生影响吗?
附言:在有人问我为什么使用如此旧版本的 Windows 10 之前,我想告诉你,我使用的是 Windows 10 v1709,因为空间不足,我无法升级到较新版本 :(
答案1
我遇到了一个tenforums.com 上的教程中所述的“方法 2”建议:
- 创建一个无人值守的应答文件,将其保存为例如。
D:\relocate.xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FolderLocations>
<ProfilesDirectory>D:\Users</ProfilesDirectory>
</FolderLocations>
</component>
</settings>
</unattend>
- 运行 sysprep
使用以管理员身份运行的 powershell 或 cmd-prompt 从本地管理员帐户运行此程序。
%windir%\system32\sysprep\sysprep.exe /oobe /reboot /unattend:d:\relocate.xml
- Windows 将重新启动,将 C:\Users 移动到 D:\Users,并进行自我更新以适应新位置。
有一个支持视频网站上有更好的解释,很多人都说这对他们有用。
Microsoft 文章将用户和 ProgramData 目录重新定位到除 Windows 目录所在的驱动器之外的其他驱动器支持这种方法。
我的经历
我尝试了上述方法,我的电脑在重启后花了一整晚的时间在青色窗口图标上旋转球,在磁盘上执行某些操作,但从未完成。关闭电源并打开电源时回到同一个位置,但显示一个对话框:
“Windows 无法完成安装。要在此计算机上安装 Windows,请重新启动安装。”
我尝试了以下方法,最终成功了:
- 将 C 盘从 MBR 转换为 GPT(一开始导致恢复时出现可怕的问题),因为我认为我可能需要超过 4 个分区
- 移除显卡并使用内置显卡(修复 GPT/UEFI 切换后可怕的黑屏问题)
- 删除了 Linux 子系统(有迹象表明 AppData/.../lxss 文件可能会导致问题)
- 卸载 VirtualBox(一次 sysprep 尝试出现错误,表明它不兼容)
- 清除 C:\ 上的部分空间,并将重新定位的“My *”目录移回 C:\Users\Ed
- 违反方法 2 视频上方的说明“使用 Windows 10 版本 1703 及更高版本,您不必如视频中所示禁用现有用户……甚至可能会将您完全锁定在 Windows 之外” - 这成功了。
我要么根据以下说明从备份中恢复 C:网站其他地方的说明或者每次向前迈出一小步。
结论:这种方法很管用,但备份时一定要小心谨慎。坚持就会有回报。
答案2
是的,我们可以通过 Powershell 脚本自动执行整个过程来移动用户配置文件。首先创建一个临时管理帐户。然后运行以下命令:
$ProfilePaths = Get-ChildItem "REGISTRY::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" |
Where-Object {$_.Name -match "^S-1-5-21*"} |
Select-Object -ExpandProperty Name -Skip 1 | Foreach {
(Get-ItemProperty "REGISTRY::$($_)" -Name "ProfileImagePath").ProfileImagePath
}
$ProfilePaths = $ProfilePaths | Where-Object {$_ -ne "C:\Users\$($env:Username)"}
$ProfilePaths | Foreach {
$Current = "$_"
$Move = $_ -replace "^C:","D:"
Move-Item -Path "$Current" -Destination "$Move"
$User = New-Object System.Security.Principal.NTAccount("$(Split-Path "$Current" -Leaf)")
$SID = $User.Translate([System.Security.Principal.SecurityIdentifier])
Set-ItemProperty "REGISTRY::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$($SID.Value)" -Name "ProfileImagePath" -Value "$Move"
}
Move-Item -Path "C:\Users\Default" -Destination "D:\Users\Default"
Set-ItemProperty "REGISTRY::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" -Name "Default" -Value "D:\Users\Default"
Move-Item -Path "C:\Users\Public" -Destination "D:\Users\Public"
Set-ItemProperty "REGISTRY::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" -Name "Public" -Value "D:\Users\Public"
脚本的作用:
- 首先移动所有配置文件
- 然后在注册表中设置一个值,让窗口通知新位置
从临时管理员帐户运行此程序
不幸的是,您无法移动 C:\Users,但可以批量移动所有用户配置文件。
答案3
由于相同的原因,我已多次这样做过,30-64 GB 的 SSD 带有辅助驱动器(HD 或 SSD),并且驱动器上的空间不足。
移动“用户”数据很容易(可以在 Windows 中执行此操作),桌面、文档、音乐等(只需右键单击并拖动到新位置),然后注销用户并重新登录。这可能不是您想要的。隐藏的应用程序文件夹、注册表等更难移动,如之前的回复所述。
您的空间不足问题可能不是用户配置文件的问题,而是 Windows 10 下载的应用程序占用了大量空间。我们在 60GB SSD 上发现,其中 32GB 是 Candy Crush 和其他实际上并未安装的垃圾游戏。
这些位于 C:\Program Files\WindowsApps\ 文件夹中。您可以查看那里,看看是否找到安装文件的多个副本。如果找到,您可以通过 Powershell remove-app 命令删除它们,然后删除文件夹。