我可以将 C:\Users 文件夹移动到 D:\ 驱动器吗?

6 disk-space mklink windows-10 windows-10-v1709 move

基本上,问题是这样的:

我拥有一台带有 32 GB EMMC 存储空间的 Windows 10 电脑,可以满足我发送邮件、进行基本打字等的需要。有一个插槽可以插入 MicroSD 卡 ( D:\),我使用 128GB 卡来存储文件。我在其中安装了所有程序,从 MS Office 到 Adob​​e Reader。由于 C:\ 驱动器只有 32GB,所以其中所剩空间不多(90% 已满)。因此,我想将 C:\Users 文件夹移动到 D:\ 驱动器以释放一些空间。

关于 C:\Users 文件夹的一些背景知识:

使所有隐藏文件可见后,其大小约为 5.5 GB,如下所示:

在此输入图像描述

因此,如果我设法将其发送到另一个驱动器,之后我将在 C:\ 中获得大量空间。

因此,为了这个目的,我开始在 SuperUser 中寻找类似的东西。大多数问题是几年前针对 Windows 7 或 8 提出的,因此,如果您认为这个问题与其他一些问题完全重复,请考虑这种情况。

在我的探索中,我遇到的第一件事是:

将预装的 MS Office 移动到另一个驱动器

我已经使用这个技巧(涉及符号链接的使用)将我的 MS Office 移动到外部 D:\ 驱动器,但我不确定此方法是否适用于移动 C:\Users。

接下来我遇到的事情是:

将 c:\Users 文件夹永久移动到 Windows 7 中的另一个分区

但是,这个问题是在 2011 年提出的,现在已经结束了。这个问题中涉及的操作系统是过时的Windows 7。因此,我担心在遵循提供的解决方案后会遇到问题。

那么,谁能告诉我是否可以C:\Users开车D:\,以及如何完成?另外,转移到另一个驱动器有哪些风险C:\Users?而且,如果我将来升级当前的 Windows 10 版本,会产生影响吗?

PS:在有人问我为什么使用这么旧版本的 Windows 10 之前,我想告诉大家,我使用的是 Windows 10 v1709,因为由于空间不足,我无法升级到新版本:(

Was*_*sif 1

是的,我们可以通过 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"
Run Code Online (Sandbox Code Playgroud)

该脚本的作用:

  • 首先移动所有配置文件
  • 然后在注册表中设置一个值以使Windows通知新位置

从临时管理员帐户运行此命令

不幸的是,您无法移动 C:\Users,但可以批量移动所有用户配置文件。