Windows 11如何更改软件默认缓存和安装盘符

作者:技术拾光时间:2026-07-15 20:00:04浏览:146

通过修改环境变量将缓存重定向至D盘,迁移商店双重缓存(包缓存与网络缓存)并创建符号链接,设置新应用安装位置,修改注册表中的ProgramFilesDir,即可将Windows11软件默认缓存及安装路径彻底移至D盘,有效释放C盘空间。

Windows 11 安装软件时,默认将缓存文件和安装目录全部存储在 C 盘。即使手动选择 D 盘安装,MSI 解包临时文件、Store 下载中转包、WindowsApps 预解压数据仍会持续占用系统盘空间。几分钟内即可消耗十几 GB 存储空间,严重影响系统运行效率。

Windows 11如何更改软件默认缓存和安装盘符

该问题可通过以下三步解决:首先调整系统级缓存路径,其次拦截 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)。修改完成后必须重启电脑,否则新安装程序仍会加载旧注册表缓存值。