看到 0x80780038 这个错误码的时候,大多数人已经站在“备份和还原”的窗口前反复点了好几轮“下一步”。系统给出的提示也很让人摸不着头脑:“指定的备份存储位置在另一个卷上有卷影副本存储”。这话既没有告诉你是哪个盘坏了,也没说哪个卷在捣乱,只会让人以为备份盘要报废了。
其实这个错误主要发生在使用 Windows 自带的**“备份和还原(Windows 7)”功能时,无论你当前系统是 Windows 7、Windows 10 还是 Windows 11,只要你用的是控制面板里那个老式备份工具,就有可能撞上它。核心问题不是你选错了硬盘,也不是硬盘坏了,而是目标盘上残留的卷影副本**和备份程序要创建的卷影副本发生了冲突。这篇文章会从 VSS 卷影副本的存储结构讲起,带你一步步查清是哪条“卷影存储关联”挡住了路,并给出可以照抄的命令行清理步骤。无论你是只想恢复备份功能,还是想彻底搞清楚今后怎么避免复发,都能在下面找到答案。
1. 先弄明白错误提示里的“另一个卷”到底是什么
别急着执行命令,先把错误背后的机制看明白,否则你只会删除目标盘上的普通文件,问题照样复现。
1.1 0x80780038 的本质是 VSS 关联冲突
Windows 的“备份和还原”功能并不是简单地复制粘贴文件,它会把整个备份过程包在卷影副本(Volume Shadow Copy,VSS)机制里。当系统为某个分区创建卷影副本时,除了原文件数据,还会生成一份隐藏的快照数据。这份快照数据放在哪里是有讲究的:
- 它可能放在正在做快照的这个分区上;
- 也可能被安排在另一个分区的“System Volume Information”目录里。
这种“哪个分区的快照存在哪个分区上”的对应关系,在命令行里叫 Shadow Copy Storage association,也就是“卷影复制存储关联”。
0x80780038 的官方对应含义是:你选择的备份存储位置,在另一个卷上已经存在卷影副本存储。换成大白话说就是——备份程序在检查目标盘时,发现目标盘上的影副本存储结构不符合它预期的“独立自包含”状态,于是拒绝继续。
举个例子。假设用户 D 盘原本是上一台电脑上的系统盘,里面保留着大量旧的系统还原点,而这些还原点的卷影数据全保存在 C 盘上。现在用户把 D 盘拆到新电脑上,想把 Windows 的备份目标指定为 D 盘。备份程序一看,这台电脑的 C 盘上莫名其妙存着一大堆指向 D 盘内容的卷影副本,在系统内部构成了一种“跨卷”的存储关系。为了不让新旧备份数据互相污染,Windows 直接抛出了 0x80780038。
1.2 卷影副本存储不是普通文件,不能手动删除
很多人遇到这个错误后,会先去备份盘里找“System Volume Information”文件夹,想把它删掉。但正常状态下这个文件夹连管理员都没有访问权限,即使你通过“获取所有权”强行打开,也很难完整清理卷影副本,因为 VSS 不是靠文件名管理快照数据的。
打个比方:普通复制文件就像你往家里搬箱子,每个箱子都能在货架上直接看到;VSS 卷影副本则像一个地下仓库,它只告诉你“仓库里有多少货、占了多大地方”,并不直接告诉你箱子的编号。要清理这个地下仓库,不能自己开卡车去库房里搬,必须通知仓库管理系统,也就是通过系统自带的 VSS 管理工具来做。
这也解释了另一个常见误区:为什么你明明把目标盘格式化了一遍,重新打开备份工具,错误还是会复现?因为如果卷影存储关联仍然存在于另一块盘上,格式化目标盘本身并不能删除“另一个卷”里针对该目标的旧快照记录。必须先把旧关联查出来、删干净。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 排查前必做的准备工作:先查清哪些卷在互相“占用”
处理 0x80780038 切忌拿到命令就乱敲。如果这台电脑上还有其他正在使用的还原点,一把梭删除所有卷影副本可能会把重要恢复点一起清掉。所以,管理员权限打开命令提示符后,第一件事永远是查询,不是删除。
2.1 用 vssadmin 查看当前卷影副本存储关联
在命令提示符或 PowerShell 中输入:
bat复制vssadmin list shadowstorage
正常输出会类似下面这样,但不同机器差异很大,字段结构是一样的:
text复制vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
Shadow Copy Storage association
For volume: (C:)\\\\?\\Volume{8a1c2d3e-...}\
Shadow Copy Storage volume: (C:)\\\\?\\Volume{8a1c2d3e-...}\
Used Space: 8.6 GB (7%)
Allocated Space: 8.6 GB (7%)
Maximum Space: 26.6 GB (21%)
Shadow Copy Storage association
For volume: (E:)\\\\?\\Volume{4f2e7b18-...}\
Shadow Copy Storage volume: (C:)\\\\?\\Volume{8a1c2d3e-...}\
Used Space: 912 MB (0%)
Allocated Space: 912 MB (0%)
Maximum Space: 26.6 GB (21%)
看到这样的输出,先别想两个卷字母是否认识,关键是要识别哪条关联惹了祸。
2.2 输出结果中哪条才是导致 0x80780038 的“罪魁祸首”
这里给出最常见的三种情况,你可以对照自己的输出快速定位:
| 输出内容 | 含义 | 风险程度 |
|---|---|---|
For volume: E:,存储位置 on E: |
E 盘自己的快照存在 E 盘自己身上 | 如果 E 是备份目标盘,一般不致命,但残留旧快照会干扰备份 |
For volume: E:,存储位置 on C: |
E 盘的快照被放在了 C 盘 | 这正是错误提示里说的“备份存储位置在另一个卷上有卷影副本存储”,优先处理 |
For volume: C:,存储位置 on E: |
C 盘的快照被放在了 E 盘 | 更麻烦,备份目标盘变成了别的系统的快照仓库,务必清掉 |
如果你的备份目标盘是 D 或 E,而 vssadmin list shadowstorage 里出现了任意一行“For volume: 目标盘”对应的 Shadow Copy Storage volume: 非目标盘,那就铁定命中导致 0x80780038 的冲突条件了。
2.3 备份现有资料,再决定删除策略
很多教程会直接把“删除所有卷影副本”写成一个通用步骤,但我不建议在你还有没备份的数据时无脑照抄。删除卷影副本的本意是清掉无用的旧还原点,可如果你在这台电脑上还依赖某些还原点来避免系统故障,动手前至少用外部硬盘把重要文件备份一遍。
另外还得确认一点:你当前进入的是控制面板里的“备份和还原(Windows 7)”,不是 Windows 10/11 自带的“文件历史记录”。因为“备份和还原(Windows 7)”会反复验证目标盘上的 VSS 状态,而“文件历史记录”用的是另一套机制,两者的报错代码和清理方式不能混用。如果用户原本用的是“文件历史记录”,即使清完卷影也不会解决它那边的其他错误。
3. 核心修复步骤:把目标卷的陈年卷影副本连根清理
确定了目标盘后,真正的修复其实只需要几行命令。下面假设你的备份目标盘是 E:,实际操作时请把所有 E: 替换成你自己的盘符。
3.1 先用管理员身份打开命令行
点击“开始”菜单,直接输入 cmd,在搜索结果中的“命令提示符”上右键,选择“以管理员身份运行”。有些用户会直接按 Win + R 弹出运行框输入 cmd,然后直接执行命令,这样会提示“请求的操作需要提升”,因为普通权限下 vssadmin delete 根本没有权限修改卷影副本存储。
如果系统提示找不到 vssadmin,多数情况下是当前 PATH 环境变量被精简过。可以手动执行:
bat复制cd C:\Windows\System32
然后再运行下面的命令。
3.2 删掉目标盘上残留的卷影副本
第一刀,清掉 E 盘自身的所有卷影副本。这一步会删除 E 盘原有的所有还原点、老的“以前的版本”快照;如果你从来没在 E 盘启用过系统保护,不会有任何副作用。
bat复制vssadmin delete shadows /for=E: /all /quiet
请特别注意,命令里的 /quiet 表示不询问确认。如果删之前想确认一下到底会删掉哪些快照,可以先执行:
bat复制vssadmin list shadows /for=E:
看到列表后如果觉得自己确实不需要保留,再执行删除。
3.3 删除指向非目标卷的卷影副本存储关联
第二步,也是最关键的一步。回到刚才 vssadmin list shadowstorage 的输出,看 E 盘的卷影副本是否被分配到了 C 盘或 D 盘。比如输出里有这样一行:
text复制For volume: (E:)
Shadow Copy Storage volume: (C:)
就执行:
bat复制vssadmin delete shadowstorage /for=E: /on=C:
如果输出里有很多不同组合,只要原则是“For volume 是 E 盘,而 On 的卷不是 E 盘”,就为该组合执行一次 delete shadowstorage。
同理,如果输出中还有“C 盘的卷影存储放在 E 盘”这种反向关联,也别忽视:
bat复制vssadmin delete shadowstorage /for=C: /on=E:
为什么要连反向关联一起清?因为 Windows 备份程序不仅要求备份位置本身不含跨卷影子存储,还要求把目标卷当作新磁盘来“初始化备份目录”。如果 C 盘还把它当快照仓库,系统在创建 WindowsImageBackup 时仍可能判断卷状态异常。
3.4 删除 E 盘自身的卷影存储关联,并重新检查
最后一刀,把 E 盘自身的存储关联也清理掉:
bat复制vssadmin delete shadowstorage /for=E: /on=E:
如果命令提示“没有找到卷影副本存储关联”,说明 E 盘本来就没有自存储关联,属于正常情况。清理完全部关联后,再执行一次:
bat复制vssadmin list shadowstorage
此时你会看到 E 盘相关的那类关联消失,只剩下系统盘必要的关联记录。到这里,引发 0x80780038 的核心原因往往已经解除。
4. 重新打开备份前,必须检查的“系统保护”开关
命令行清理只是清掉了旧账,真正让问题反复出现的,往往是系统还在继续往备份目标盘写入卷影存储关联。
4.1 备份目标盘不该参与系统保护
Windows 的系统还原(System Protection)会自动给启用保护的分区创建定期还原点。如果你把备份目标盘也纳入了系统保护,操作系统就会持续在它上面维护一层用于“还原点”的卷影副本。这些卷影副本和 Windows 备份自己创建的卷影副本是两套东西,同一块盘同时承担两个角色,时间一久就会再次出现存储关联混乱。
想确认并关闭它,可以按 Win + R 输入:
text复制SystemPropertiesProtection.exe
在弹出的“系统保护”选项卡中,找到“保护设置”列表,选中你的备份目标盘,点击“配置”,再选择“禁用系统保护”。此时系统还会弹出一个选项:“删除该磁盘上所有的还原点”,如果你已经有了命令行的清理基础,这里顺手选“删除”即可,避免旧数据再次干扰备份。
4.2 只在备份工具里保留这一个目标盘
处理完系统保护后,回到控制面板的“备份和还原(Windows 7)”,点击“更改设置”或“设置备份”,重新选择存储位置。很多人只选一次,甚至选择完就退出,导致备份计划没有真正保存,所以后面又从“管理备份”重新进入,状态又是一团乱麻。
正确操作流程是:
- 点击“更改设置”,选择刚才清理过的 E 盘;
- 点击“下一步”,让 Windows 自动评估备份内容;
- 如果界面弹出“查看备份设置”并显示“保存设置并运行备份”,点“保存设置并运行备份”;
- 等待首轮备份真正执行完成,不是只保存计划。
第一次运行成功会生成一个 WindowsImageBackup 文件夹,这是 Windows 备份真正落地的重要标志。看到这个文件夹出现,说明 VSS 冲突已经解决。
4.3 重新执行时如果再遇到同代码,检查是否仍有 VSS 快照被“占用”
有些情况下,命令行已经清理干净,UI 重新配置时仍然报 0x80780038。此时建议重启一次电脑,再重新尝试。因为 VSS 服务可能仍保留着内存里的旧状态,不重启的话,删除操作虽然生效,但备份引擎看到的还是缓存里的旧卷影信息。
重启后仍然报错的话,就接着往下看第 5 节。
5. 容易被忽略的隐形因素:VSS 服务、残留备份目录与空间不足
如果你按上面的顺序操作完,错误依旧存在,说明问题不只是“旧还原点残留”,还有别的系统状态在干扰。不要急着格式化,先把下面三个隐藏因素逐一排除。
5.1 Volume Shadow Copy 服务被禁用或挂起
VSS 系统服务是备份功能的底座。你可以按 Win + R 输入 services.msc,在服务列表中找到 Volume Shadow Copy,检查它的“启动类型”是不是“手动”,状态是不是“正在运行”。
有些用户安装过安全软件、系统优化工具或精简版系统,这个服务会被改成“禁用”。服务被禁用时,备份程序根本无法创建任何快照,但它报的不一定是 0x80780038,可能是一堆泛用错误。如果你不小心修改过服务设置,可以用命令行恢复默认状态:
bat复制sc config VSS start= demand
再手动启动:
bat复制sc start VSS
服务处理完后,再去 services.msc 里看另一个相关服务 Microsoft Software Shadow Copy Provider,它的启动类型应为“手动”,但需要时可自动拉起。缺了这个服务,很多第三方备份软件也会跟 Windows 原生备份抢同一套 VSS Provider,导致目标卷状态一直被占用。
5.2 手动删除旧的 WindowsImageBackup 残留目录
如果你之前的备份曾成功过一部分,目标盘上很可能已经存在 WindowsImageBackup 文件夹。当这个文件夹里的映像文件不完整、权限异常或与当前系统版本不匹配时,备份程序无法覆盖它,但又坚持要往里面写,于是会在卷影检查阶段就中止。
解决办法是找到目标盘根目录下的 WindowsImageBackup 文件夹,将其重命名,比如改成 WindowsImageBackup_old。不要直接删,留一份当备份还能救命。重命名后重新执行备份任务,Windows 会认为这是一块新盘,不再尝试维护旧目录里的索引。
如果重命名都提示权限不足,进入文件夹属性-安全-高级,把所有者改成当前管理员账户,再赋予完全控制权限,完成后再重命名或删除。
5.3 检查磁盘可用空间是否足够
卷影副本不是凭空占空间的,它需要从所在卷的可用空间里划出一块区域。如果目标盘已经几乎塞满,Windows 备份在准备阶段创建临时卷影时,会因为没有可用容量而拒绝进入下一步,返回的错误同样可能是 0x80780038。
建议备份目标盘的剩余空间至少保留备份数据体积的 10% 以上。比如你计划做 300GB 的系统镜像,E 盘除了最终需要容纳约 300GB 的 WindowsImageBackup,还要额外留出 30GB 左右作为 VSS 工作空间。
检查剩余空间可以直接在“此电脑”里看,也可以用命令:
bat复制fsutil volume diskfree E:
如果发现空间不足,先把无关文件移走,或干脆把目标盘格式化成一块专门存备份的盘,再重新执行备份。
5.4 查看事件日志确认具体 VSS 写入失败位置
如果仍难定位问题,可以按 Win + R 输入 eventvwr.msc,在 Windows 日志-应用程序里筛选来源为 VSS、Backup 的事件。0x80780038 报错前后的几分钟内,事件详情通常会记录到“无法创建卷影副本”的原因,比如“磁盘空间不足”“卷影存储关联错误”或“VSS 快照集包含非当前引导卷”。根据日志提示,再回到对应的卷上执行清理,比盲目重复命令有效得多。
6. 实在清理不干净时的终极方案:重建备份卷结构
如果你已经清理了 VSS 关联、关了系统保护、删了 WindowsImageBackup,也确认了空间与服务,错误还是如影随形,那问题大概率不在 VSS 逻辑层,而在这块盘的旧分区结构或 System Volume Information 目录损坏。这时候最省事的方案是重建卷结构,也就是彻底格式化并重新分区。
6.1 判断是否真的需要格式化
格式化会清空整块盘上所有文件,只有在以下情况都满足时才建议走这一步:
- 目标盘上没有唯一且无法重新获取的数据;
- 你已经在其他介质上做好重要数据备份;
- 命令行清理执行了至少两轮,并且重启后仍然报 0x80780038。
如果这块盘只是从旧电脑拆下来的,上面还留着旧系统的“系统保留分区”或 OEM 一键还原分区,格式化前最好先用磁盘管理查清楚分区布局,免得把引导需要或者有恢复价值的分区误删。
6.2 使用 diskpart 彻底重建目标盘
如果你确定要清理整块磁盘,警告一句话:diskpart 的 clean 操作会擦除磁盘上所有分区。下面命令会删除整张物理硬盘的分区信息,请务必确认选定的是正确的磁盘编号。
打开管理员命令行,输入:
bat复制diskpart
进入 diskpart 交互界面后,先用 list disk 查看所有物理磁盘:
bat复制list disk
根据磁盘大小和序号确认哪个是目标备份盘。如果你有 3 块硬盘,其中 1 号是 500GB 的系统盘,2 号是 2TB 的备份盘,那就要小心别把编号搞混。确认无误后继续:
bat复制select disk 2
clean
create partition primary
format fs=ntfs quick
assign letter=H
exit
这里把目标盘设置成了 H:,格式化完成后,这块盘就等于一块全新的空白磁盘。再次打开“备份和还原(Windows 7)”,选择 H 盘作为备份位置,一般不会再遇到卷影存储关联冲突。
6.3 格式化后依然报错的情况,考虑更换备份方式
有一小部分情况非常极端:即使用 diskpart 重建了整张硬盘,Windows 原生备份工具还是报错。此时建议放弃继续跟 0x80780038 较劲,换用其他备份方案。
Windows 10 和 Windows 11 自带 wbadmin 命令行备份工具,它同样基于 VSS,但配置逻辑和旧版“备份和还原(Windows 7)”不同,很多旧工具跑不通的场景在 wbadmin 下反而能正常执行。比如管理员命令行中输入:
bat复制wbadmin enable backup -addtarget:H: -schedule:02:00 -include:C:
wbadmin start backup -backupTarget:H:
如果 wbadmin 也报错,那就需要考虑使用第三方的磁盘镜像软件来备份整个系统分区,别再纠结系统自带的那个老面板了。毕竟,工具是为人服务的,没必要为了修复一个陈年备份功能而浪费大量时间。
7. 防止 0x80780038 复发的几个实用习惯
修复过一次之后,最重要的其实是别再让旧问题重演。根据我处理这类问题的经验,下面几个习惯能大大降低再次遇到该错误码的概率。
7.1 只让系统盘参与系统保护,备份盘保持“纯存储”身份
绝大多数情况下,只有系统盘需要开启系统保护,用来创建还原点。其他数据盘,尤其是专门担任备份目标盘的卷,不要在“系统保护”列表里启用。Windows 备份和系统还原共用 VSS 底层,但它们的快照管理策略并不完全兼容。让备份盘保持单一角色,就不会再产生互相冲突的存储关联。
7.2 新接一块旧硬盘当备份盘前,先做一次 VSS 清道夫
如果你手里有一块从别的电脑上拆下来的旧硬盘,插到新电脑后别急着立刻把它设为备份位置。先进命令行执行 vssadmin list shadowstorage,看看这块旧硬盘的卷是否跟当前系统盘之间已经建立了快照存储关联。如果发现关联,直接按第 3 节的方法清理,再开始设置备份。
我曾经就踩过这个坑:一块旧系统盘被我当成外部备份盘接到工作机上,结果每次配置“备份和还原”都能顺利走完前两步,一到最后“保存设置”就报 0x80780038。折腾了半天,最后发现是旧盘上面的卷影存储关联一直指向另一块已经不存在的区域,清完关联后一次通过。
7.3 备份盘满了会导致备份索引失联,要及时清理旧镜像
Windows 自带的备份策略并没有做自动的增量循环清理,它会一直保存旧的系统镜像,直到把整块盘塞满。当备份盘剩余空间低于 10% 时,下次创建卷影副本就可能失败,而且报错不一定提示“空间不足”,反而会绕回 VSS 冲突这个方向。
建议每次备份完成后,都去看一眼 WindowsImageBackup 文件夹的体积。如果它占用了备份盘 80% 以上,就要在“备份和还原”界面通过“管理空间-查看备份”删除最老的备份版本,或者手动清理不需要的旧镜像,保证备份盘留有充裕的写缓存空间。
7.4 定期用一条命令监控卷影存储状态
对普通用户来说,不需要每天背命令行,但每三个月检查一次,能避免很多隐性问题。管理员命令行里执行:
bat复制vssadmin list shadowstorage
如果你发现某个不是系统盘的卷上,出现了大段的卷影存储关联,或者备份盘上的“已用空间”数字异常增长,就说明有程序在偷偷创建快照。这时候再去禁用无关软件,删除对应关联,比等到 0x80780038 弹出来再处理要省心得多。
很多人看到 0x80780038 会以为是自己操作失误导致数据损坏,其实它更多是一个“状态不一致”的错误。只要顺着卷影副本存储关联这条线,一步步把旧的 VSS 记录清干净,Windows 自带的备份功能就能恢复正常。我自己在维护不同电脑时也反复确认过:大多数失败案例在清理目标盘的卷影副本并关闭多余系统保护后就能解决,真正需要格式化重建盘的场景少之又少。处理完问题后,再做一件举手之劳的事——把备份目标盘在“系统保护”里的开关关掉,以后备份就会安静许多。
