Windows 11 在安装软件时,默认会将所有缓存文件和安装目录保存在 C 盘。即使你手动选择 D 盘作为安装路径,MSI 解包临时文件、Store 下载中转包以及 WindowsApps 预解压数据,依然会不断占用系统盘空间。短短几分钟内就可能消耗十几 GB,着实令人头疼。

其实这个问题有解决方法,而且并不复杂。核心思路分为三步:首先调整系统级缓存路径,其次拦截 Store 应用的双重缓存,最后将新应用的安装位置彻底迁移到 D 盘。下面我们一步一步操作。
一、强制将所有安装缓存重定向到 D 盘
这一步覆盖范围最广,包括 Windows Installer、PowerShell 模块、.NET 工具链、Store 下载中转等所有标准缓存路径,都会被统一管理。因此必须优先执行。
操作步骤很简单:在“此电脑”上右键,选择“属性” → “高级系统设置” → “高级” → “环境变量”。在“系统变量”区域找到 TEMP 和 TMP,双击并将值改为 D:Temp。请注意,必须提前手动创建 D:Temp 文件夹,路径中不能包含中文、空格或全角符号,否则后续所有安装程序可能会静默失败,或者退回 C 盘写入,导致前功尽弃。
修改完成后,务必重启电脑。否则新的环境变量仅对当前终端生效,msiserver 服务、Store 后台进程仍然会读取旧的缓存路径,相当于没有修改。
二、拦截 Microsoft Store 应用的双重缓存
Store 应用存在两套独立的缓存机制:下载阶段使用 PackageCache,安装阶段使用 WindowsApps。这两者都不受 TEMP 变量控制,需要分别处理。
首先迁移 PackageCache。打开文件资源管理器,在地址栏输入 C:ProgramDataPackagesPackageCache 并回车(注意先开启“查看 → 显示隐藏的项目”)。将整个文件夹剪切到 D 盘根目录,路径为 D:PackageCache。然后以管理员身份运行命令提示符,执行:
mklink /J "C:ProgramDataPackagesPackageCache" "D:PackageCache"
出现“为 C:ProgramDataPackagesPackageCache 创建的联结”提示即表示成功。此后所有 Store 下载的 .appxbundle 包将直接写入 D 盘。
还有一套运行时缓存需要处理,即 INetCache。先按 Win + R 输入 wsreset.exe 清空当前缓存,然后关闭所有 Store 相关进程(在任务管理器中结束 Microsoft Store、WSService、Windows Update Medic Service)。在 D 盘新建文件夹 D:WSStoreCache,以管理员身份运行 PowerShell,执行:
mklink /J "C:Users【用户名】AppDataLocalPackagesMicrosoft.WindowsStore_8wekyb3d8bbweACINetCache" "D:WSStoreCache"
注意替换【用户名】为你的实际用户名。
三、确保新安装的应用真正存储在 D 盘
仅修改缓存还不够,应用本体仍可能安装回 C 盘。以下三步叠加使用,可覆盖 Store 应用、传统 MSI 以及老旧 EXE 三类场景。
首先,设置 Store 应用的默认部署位置。按 Win + I 打开设置,依次进入“系统” → “存储” → “高级存储设置” → “保存新内容的地方”,在“新应用将保存到”下拉菜单中选择 D:,然后点击应用。
其次,手动干预第三方安装器运行时环境。以管理员身份运行命令提示符,执行:
set TMP=D:Temp && set TEMP=D:Temp && start "" "D:Downloadsetup.exe"
此命令仅对当前安装程序生效,但可以绕过其硬编码的 %SystemRoot%Temp 路径,强制使用 D 盘缓存。
最后,通过修改注册表永久重定向 Program Files 根目录。按 Win + R 输入 regedit 并回车,导航至 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion,双击右侧的 ProgramFilesDir,将数值数据从 C:Program Files 改为 D:Program Files。同样将 ProgramFilesDir (x86) 改为 D:Program Files (x86)。修改完成后必须重启电脑,否则新安装程序仍会加载旧的注册表缓存值。
