1. 从一次烧录翻车说起Error 5 到底卡在哪Win32 Disk Imager 这个工具玩树莓派、装 Ubuntu 系统、给开发板烧固件的人基本都绕不开。它界面简单选个镜像、选个盘符、点 Write等进度条走完就完事。但就是这么一个看起来傻瓜式的工具偏偏会在某个时刻弹出一个让人血压升高的对话框Error 5: Access is denied拒绝访问。我第一次遇到这个问题是在给一张 32GB 的 SD 卡烧录系统镜像的时候。镜像文件没问题卡也是新买的读卡器插上电脑能正常识别盘符也出来了但一点 Write 就报 Error 5。换了一张卡还是 Error 5。换了个读卡器依然 Error 5。当时第一反应是卡坏了差点就把卡扔了。后来折腾了大半天才搞明白这个报错的根源跟卡本身的质量关系不大绝大多数情况下是Windows 系统层面的权限或占用问题。Error 5 在 Windows 错误码体系里对应的是ERROR_ACCESS_DENIED意思是访问被拒绝。Win32 Disk Imager 在写入时需要对目标物理磁盘进行扇区级的裸写入这跟普通复制粘贴文件完全不是一个层级。普通复制文件走的是文件系统接口而烧录镜像走的是底层块设备接口需要直接操作\\.\PhysicalDriveN这样的设备路径。一旦这个路径被系统或其他程序占用、锁定或者当前用户权限不够就会直接抛出 Error 5。所以这篇文章要解决的问题很明确当 Win32 Disk Imager 报 Error 5 时如何系统性地排查并解决 SD 卡写入问题。我会把三种经过实测的方法完整拆开讲包括每种方法背后的原理、具体操作步骤、以及我在实际操作中踩过的坑。不管你是刚接触烧录的新手还是已经用过很多次但偶尔被这个报错卡住的老手都能从里面找到可以直接抄作业的方案。2. 先搞清楚 Win32 Disk Imager 的写入机制2.1 为什么它需要管理员权限很多人装完 Win32 Disk Imager 之后直接双击打开就开始用从来没想过以管理员身份运行这件事。平时烧录小镜像可能碰巧没出问题但一旦遇到系统保护比较严格的磁盘区域或者目标设备被其他驱动挂载了Error 5 就来了。Win32 Disk Imager 的写入流程大致是这样的它首先通过CreateFileAPI 打开目标物理磁盘的设备句柄路径类似\\.\PhysicalDrive2。这个操作在 Windows 上属于高权限操作普通用户令牌默认是没有权限直接打开物理磁盘句柄的。即使你的账户在管理员组里如果没有显式提权UAC 提权进程拿到的仍然是标准用户令牌CreateFile就会返回ERROR_ACCESS_DENIED。这就解释了一个很常见的现象同一台电脑同一个镜像同一个读卡器有时候能烧有时候报 Error 5。差别往往就在于这次是不是以管理员身份启动的。Windows 的 UAC 机制会让程序在非提权状态下运行而 Win32 Disk Imager 的清单文件如果没有强制要求提权它就不会自动弹 UAC 窗口。提示判断当前进程是否有管理员权限可以在 Win32 Disk Imager 里看标题栏如果标题栏没有显示管理员字样那大概率就是普通权限在跑。2.2 物理磁盘被占用的几种典型情况权限只是第一道门槛。即使你以管理员身份运行了Error 5 依然可能出现这时候就要考虑磁盘被占用的问题。Windows 对物理磁盘的访问是独占性的同一时间只允许一个进程持有写入句柄。以下这些情况都会导致磁盘被锁定Windows 自动挂载了 SD 卡的分区SD 卡插上读卡器后如果卡上有 Windows 能识别的分区比如 FAT32、exFAT、NTFS系统会自动挂载并分配盘符。资源管理器、索引服务、杀毒软件都可能去访问这些分区导致物理磁盘句柄被占用。杀毒软件实时扫描很多安全软件会监控可移动存储设备插上 SD 卡后自动扫描扫描期间磁盘处于被占用状态。其他烧录工具或磁盘工具在后台运行比如 Rufus、balenaEtcher、DiskGenius 等如果它们还开着可能持有磁盘句柄。Windows 的 ReadyBoost 或存储感知服务某些系统配置下这些服务会主动接管可移动磁盘。这些占用情况在资源管理器里是看不出来的你只能看到盘符正常显示但底层句柄已经被别人拿走了。Win32 Disk Imager 尝试打开物理磁盘时就会失败报 Error 5。2.3 Error 5 和其他常见报错的区分在排查之前有必要把 Error 5 和其他几个容易混淆的报错区分开避免走错方向报错信息错误码典型原因排查方向Error 5: Access is denied5权限不足或磁盘被占用提权运行、解除占用Error 32: The process cannot access the file32文件被其他进程锁定关闭占用进程Error 21: The device is not ready21读卡器未识别或卡未插好检查硬件连接Error 1117: The request could not be performed1117硬件I/O错误检查卡和读卡器Error 5 的核心特征是拒绝访问它跟硬件故障的报错有本质区别。如果你的卡在磁盘管理里能看到但烧录时报 Error 5那基本可以确定是软件层面的权限或占用问题不用急着怀疑卡坏了。3. 方法一以管理员身份运行并关闭占用进程3.1 正确的提权启动方式这是最直接、也是最容易见效的方法。操作步骤很简单但细节上有很多人做错完全关闭当前打开的 Win32 Disk Imager 窗口。注意是彻底关闭不是最小化。找到 Win32 Disk Imager 的快捷方式或可执行文件右键点击选择以管理员身份运行。如果弹出 UAC 确认窗口点击是。程序启动后观察标题栏是否显示管理员相关标识。这里有个细节如果你是从开始菜单或任务栏启动的右键菜单里可能没有以管理员身份运行选项。这时候需要找到安装目录下的Win32DiskImager.exe直接右键操作。另外如果你用的是绿色版免安装版同样要右键可执行文件来提权。注意提权运行后Win32 Disk Imager 打开的文件对话框权限也会提升这时候选择镜像文件和目标设备都不会再受普通用户权限限制。3.2 用任务管理器排查占用进程提权之后如果还报 Error 5下一步就是排查谁在占用磁盘。Windows 没有直接提供查看物理磁盘占用的图形界面但可以通过以下方式间接排查打开任务管理器Ctrl Shift Esc在进程标签页里找可能访问磁盘的程序杀毒软件、云同步工具、磁盘管理工具、其他烧录软件。逐个结束这些进程然后重新尝试烧录。如果不确定是哪个进程可以先用资源监视器在任务管理器性能标签页底部打开查看磁盘活动观察哪个进程在读写目标盘符。资源监视器的磁盘标签页会列出所有正在访问磁盘的进程和对应的文件路径。虽然它显示的是盘符级别的活动但能帮你快速定位可疑进程。比如你看到某个杀毒软件的进程正在扫描E:\你的 SD 卡盘符那它就是嫌疑对象。3.3 关闭 Windows 自动挂载的实操Windows 自动挂载是导致磁盘占用的头号嫌疑。每次插入 SD 卡系统都会自动分配盘符并挂载分区。要解除这个占用有几个层次的操作第一层在资源管理器里弹出设备。右键点击 SD 卡的盘符选择弹出。这会通知系统卸载该卷释放部分句柄。但这个方法不一定彻底因为物理磁盘句柄可能还被其他服务持有。第二层在磁盘管理里离线磁盘。按 Win X选择磁盘管理找到对应的 SD 卡磁盘右键点击磁盘名称不是分区选择离线。离线后磁盘对文件系统层不可见但物理句柄可能仍然被占用。第三层使用 diskpart 的 automount 命令。这是最彻底的方式下一节会详细讲。我实测下来的经验是单纯在资源管理器里弹出设备成功率大概只有一半。因为 Windows 的存储服务、索引服务、缩略图缓存等都可能重新挂载。真正可靠的做法还是用 diskpart 把自动挂载关掉或者直接对物理磁盘做清理操作。3.4 这个方法为什么有时候不管用有些情况下即使你提权了、也关了所有能想到的进程Error 5 依然存在。这通常是因为系统级服务持有句柄比如System进程、svchost.exe下的存储服务这些没法直接结束。驱动层面的锁定某些读卡器驱动或 USB 控制器驱动会锁定设备。SD 卡本身的分区表异常如果卡的分区表损坏Windows 可能反复尝试挂载失败导致磁盘状态异常。遇到这些情况就需要用到下面两种更底层的方法。4. 方法二用 diskpart 清理磁盘并解除占用4.1 diskpart 是什么为什么它能解决 Error 5diskpart 是 Windows 自带的命令行磁盘管理工具权限级别比图形界面的磁盘管理更高。它能直接操作物理磁盘、卷、分区执行 clean、offline、attributes 等底层命令。对于 Win32 Disk Imager 的 Error 5 问题diskpart 主要能帮我们做两件事清除磁盘上的所有分区和卷信息让 Windows 不再自动挂载从而释放文件系统层的占用。将磁盘设置为离线状态或者清除磁盘的只读属性解决因属性异常导致的访问拒绝。diskpart 的操作是不可逆的执行clean会抹掉磁盘上的所有数据。所以在操作之前务必确认目标磁盘就是你的 SD 卡而且卡上没有需要保留的数据。4.2 完整操作步骤与命令详解以下是我常用的 diskpart 操作流程每一步都说明意图第一步以管理员身份打开命令提示符。按 Win R输入cmd然后按 Ctrl Shift Enter 提权打开。或者在开始菜单搜索命令提示符右键选择以管理员身份运行。第二步启动 diskpart。在命令行输入diskpart第三步列出所有磁盘。输入list disk这时候会显示系统中所有物理磁盘的编号、大小、可用空间等信息。你需要根据容量来识别哪一个是 SD 卡。比如你的 SD 卡是 32GB那就在列表里找大小接近 32GB 的那个磁盘。千万不要选错选错磁盘执行 clean 会把电脑硬盘的数据抹掉。第四步选中目标磁盘。假设 SD 卡是磁盘 2输入select disk 2第五步清除磁盘。输入clean这个命令会删除磁盘上的所有分区表和卷信息。执行成功后磁盘会变成未初始化状态Windows 不会再自动挂载它。第六步清除只读属性可选但推荐。有些 SD 卡会因为写保护或属性异常导致 Error 5执行attributes disk clear readonly第七步退出 diskpart。输入exit完成这些操作后不要急着拔卡直接打开 Win32 Disk Imager记得以管理员身份重新选择镜像和目标磁盘再点 Write。我实测这个流程解决 Error 5 的成功率非常高尤其是那些反复报错、换工具也没用的卡。4.3 clean 和 clean all 的区别别选错diskpart 里有两个清理命令clean和clean all。很多人不知道区别随手选了clean all结果等了半小时还没跑完。clean只清除分区表和卷信息速度极快几秒钟完成。磁盘上的实际数据还在只是系统不再识别。对于解决 Error 5 来说clean 就够了。clean all把磁盘上每一个扇区都写零彻底擦除数据。这个操作非常耗时32GB 的卡可能要跑十几分钟到半小时而且对解决 Error 5 没有额外帮助。所以除非你有特殊的数据销毁需求否则用 clean 就行别用 clean all。4.4 操作中的风险与注意事项diskpart 是一把双刃剑用好了解决问题用错了数据全没。以下几点必须注意确认磁盘编号list disk之后仔细核对容量。如果电脑里有多个同容量的磁盘可以先拔掉 SD 卡看哪个磁盘消失了再插上看哪个磁盘出现以此确认编号。不要对系统盘操作系统盘通常是磁盘 0千万不要 select disk 0 然后 clean。操作后磁盘在资源管理器里会消失这是正常现象因为分区被清了。烧录完成后Win32 Disk Imager 写入的新分区会重新出现。如果 clean 报错拒绝访问说明磁盘被更底层的驱动锁定了可以尝试重启电脑后再操作或者换一个 USB 接口。提示如果你不确定磁盘编号可以在 diskpart 里先执行list volume查看各个卷的盘符和标签辅助判断。但最终 select 的必须是 disk 而不是 volume。5. 方法三换工具或换接口绕过底层冲突5.1 为什么有时候换工具比修工具更快前两种方法都是在 Win32 Disk Imager 这个框架内解决问题。但实际工作中时间成本也是成本。如果 diskpart 清理完还是报 Error 5或者你手头没有管理员权限那换一个烧录工具往往是最快的出路。不同的烧录工具底层调用的 API 和驱动模型不一样。Win32 Disk Imager 用的是比较传统的CreateFileWriteFile直接写物理磁盘的方式对权限和占用非常敏感。而一些现代工具用了不同的写入策略可能就绕过了你当前环境下的冲突点。5.2 几个值得一试的替代工具以下是我在实际项目中用过、并且能解决 Error 5 类问题的替代方案工具名称特点适用场景balenaEtcher跨平台自动提权界面友好树莓派、Ubuntu 镜像烧录Rufus体积小支持多种写入模式Windows 启动盘、SD 卡烧录USBImager极简写入速度快嵌入式开发板固件烧录dd for Windows命令行底层控制强高级用户脚本化烧录balenaEtcher 是我最推荐的替代品。它在启动时会自动请求管理员权限而且写入前会主动卸载目标磁盘的卷减少占用冲突。Rufus 的优势在于它提供了DD 模式和ISO 模式两种写入方式遇到 Error 5 时可以切换模式试试。5.3 换 USB 接口和读卡器的实际效果除了换软件硬件层面的调整也值得一试。Error 5 有时候跟 USB 控制器的驱动状态有关换一个 USB 接口前置接口和后面板接口可能挂载在不同的 USB 控制器上驱动状态不一样。我遇到过前置接口一直报 Error 5换到后面板就正常的情况。换一个读卡器不同读卡器的主控芯片不同对磁盘的呈现方式也有差异。有些廉价读卡器会把 SD 卡识别成可移动设备而不是物理磁盘导致 Win32 Disk Imager 找不到目标。避免使用 USB HubHub 会引入额外的电源和信号问题直连主板接口最稳。尝试 USB 2.0 接口虽然速度慢但兼容性通常比 USB 3.0 更好尤其是在老读卡器上。5.4 换工具后的验证与收尾换工具烧录成功后建议做一次验证确认写入的数据是完整的烧录完成后先不要急着拔卡等系统重新识别分区。在资源管理器里查看新出现的盘符确认分区结构符合预期比如树莓派镜像会出现 boot 分区。如果烧录的是启动盘可以尝试在目标设备上启动一次确认能正常引导。如果烧录的是数据盘可以用校验工具对比镜像和磁盘的哈希值。这里有个经验换工具烧录成功后原来的 Win32 Disk Imager 可能也能用了。因为烧录过程重新格式化了磁盘清除了之前导致占用的异常状态。所以如果你对 Win32 Disk Imager 有偏好可以在换工具成功后再切回来试试。6. 三种方法的适用场景与选择建议6.1 按问题根因选择方法三种方法不是互斥的而是针对不同根因的。我整理了一个选择逻辑方便你快速定位如果是权限问题非管理员运行、UAC 限制直接用方法一右键以管理员身份运行。如果是磁盘被占用杀毒软件、自动挂载、其他工具先试方法一关闭进程不行就用方法二 diskpart 清理。如果是底层驱动冲突或工具兼容性问题方法二清理后仍报错直接上方法三换工具。如果是硬件层面的问题读卡器、USB 接口方法三的换接口、换读卡器。实际排查时建议按方法一 → 方法二 → 方法三的顺序来因为方法一成本最低方法二稍重但很有效方法三需要额外准备工具。6.2 不同操作系统环境下的差异虽然 Win32 Disk Imager 是 Windows 工具但很多人是在多系统环境下工作的。这里补充几点跨平台的注意事项Windows 10/11UAC 机制比较严格提权运行是必须的。Windows 11 对可移动存储的管理更激进自动挂载和索引服务更容易造成占用。Windows 7UAC 相对宽松但磁盘驱动模型较老某些新读卡器可能兼容性差。Linux 环境如果用 dd 命令烧录Error 5 对应的是Permission denied用 sudo 即可解决。但要注意先 umount 目标设备。macOS 环境用 dd 时需要用diskutil unmountDisk先卸载磁盘否则会报Resource busy。6.3 预防 Error 5 的日常习惯与其每次报错再排查不如养成几个习惯从源头减少 Error 5 的出现始终以管理员身份运行 Win32 Disk Imager把它固定到任务栏时就用提权方式启动。烧录前先关闭杀毒软件的实时扫描或者把读卡器设备加入白名单。插卡后不要急着打开资源管理器先让系统完成挂载再用 diskpart 或磁盘管理确认状态。定期用 diskpart 清理旧卡尤其是反复烧录过的卡分区表容易残留异常信息。准备一个专用的读卡器和 USB 接口固定用于烧录减少变量。7. 几个容易被忽略的细节和我的实操心得7.1 镜像文件本身也可能触发 Error 5这一点很多人想不到如果镜像文件所在的路径没有读取权限或者镜像文件被其他程序占用Win32 Disk Imager 也可能报 Error 5。虽然错误信息说的是访问被拒绝但它没有区分是目标磁盘被拒绝还是源文件被拒绝。我遇到过一次镜像放在一个受保护的文件夹里Win32 Disk Imager 能选中文件但一点 Write 就报 Error 5。后来把镜像复制到桌面问题就解决了。所以排查时不妨把镜像文件放到一个简单、无权限限制的路径下比如C:\temp\或桌面。7.2 SD 卡写保护开关的坑有些 SD 卡侧面有一个物理写保护开关Lock 开关。如果这个开关被拨到了锁定位置Win32 Disk Imager 写入时就会报 Error 5。这个坑很隐蔽因为卡插上电脑能正常读取你根本想不到是写保护的问题。注意不是所有 SD 卡都有写保护开关但如果你用的是大卡标准 SD 卡一定要检查一下侧面那个小滑块是不是在 Lock 位置。7.3 磁盘编号变化导致的选错盘Windows 在插拔 USB 设备后磁盘编号可能会变化。比如你上次烧录时 SD 卡是磁盘 2这次插上可能变成了磁盘 3。如果你在 diskpart 里凭记忆 select disk 2可能选中的是别的设备。我的做法是每次操作前都重新执行list disk根据容量和当前状态确认编号。不要偷懒这一步花不了几秒钟但能避免灾难性的误操作。7.4 烧录速度异常慢时的处理有时候 Error 5 解决了但烧录速度慢得离谱比如 32GB 的镜像跑了两个小时还没完。这通常跟读卡器、USB 接口、SD 卡等级有关读卡器主控性能差廉价读卡器的写入速度可能只有几 MB/s。USB 2.0 接口理论带宽 480Mbps实际写入速度受限。SD 卡等级低Class 4 的卡写入速度远低于 Class 10 或 UHS-I。镜像压缩率高某些镜像内部是压缩数据写入时需要解压CPU 成为瓶颈。如果速度慢但能正常完成可以耐心等待。如果慢到卡死建议换读卡器或换卡。7.5 烧录完成后的安全弹出烧录完成后不要直接拔卡。Windows 的写入缓存可能还没完全刷到磁盘直接拔卡会导致数据损坏。正确做法是等 Win32 Disk Imager 提示Write Successful。在资源管理器里右键 SD 卡盘符选择弹出。等系统提示可以安全移除硬件后再拔卡。如果弹出时报设备正在使用中可以用 diskpart 的offline disk命令强制离线然后再拔。8. 当 Error 5 反复出现时的深度排查思路8.1 检查磁盘是否被设置为只读有些 SD 卡会因为寿命耗尽或主控保护机制被固件设置为只读状态。这种情况下无论怎么提权、怎么清理写入都会报 Error 5。判断方法在 diskpart 里执行select disk 2 detail disk查看输出中是否有只读属性。如果有尝试用attributes disk clear readonly清除。如果清除后重新插拔又变回只读那基本可以判断卡已经进入保护状态需要更换。8.2 用 chkdsk 检查文件系统错误如果 SD 卡的分区表或文件系统有错误Windows 可能反复尝试修复导致磁盘被占用。可以在命令行执行chkdsk E: /f /r其中 E: 是 SD 卡的盘符。/f修复错误/r扫描坏扇区。这个操作可能需要较长时间但能解决一些因文件系统异常导致的占用问题。注意chkdsk 对物理磁盘的底层问题无能为力它只处理文件系统层。8.3 更新读卡器驱动和 USB 控制器驱动驱动层面的问题比较隐蔽但确实存在。可以在设备管理器里找到通用串行总线控制器和磁盘驱动器右键更新驱动。如果读卡器有厂商提供的专用驱动优先安装厂商版本。另外某些主板芯片组的 USB 驱动老旧会导致大容量存储设备识别异常。更新主板芯片组驱动有时能意外解决 Error 5。8.4 最后的硬件替换法如果以上所有方法都试过了Error 5 依然存在那就进入硬件替换排查阶段换一张已知良好的 SD 卡用同样的读卡器和接口烧录。如果正常说明原卡有问题。换一个读卡器用同样的卡和接口。如果正常说明原读卡器有问题。换一台电脑用同样的卡和读卡器。如果正常说明原电脑的驱动或系统配置有问题。这种替换法虽然笨但能最快定位问题边界。我在实际工作中遇到过一个案例最后发现是某品牌笔记本的 USB 控制器驱动与特定读卡器不兼容更新驱动后解决。9. 关于烧录这件事的一些个人体会烧录看起来是个简单操作但真正做过几百次之后会发现大部分失败都不是工具本身的问题而是环境问题。权限、占用、驱动、硬件状态这些因素交织在一起任何一个环节出问题都会表现为一个简单的 Error 5。我现在养成的习惯是每次烧录前先花一分钟做三件事——确认以管理员身份运行、用 diskpart 清理目标磁盘、把镜像放到简单路径。这三步做完Error 5 基本就不会再出现了。偶尔遇到顽固的情况直接换 balenaEtcher 或 Rufus不跟它较劲。另外SD 卡是有寿命的。反复烧录会消耗卡的写入寿命尤其是廉价卡。如果一张卡开始频繁报错即使能通过清理暂时解决也建议换新卡避免在关键时刻掉链子。我一般会备两三张同型号的卡轮换使用既能延长寿命也能在出问题时快速替换。最后分享一个小技巧如果你经常烧录同一种镜像比如树莓派系统可以把 diskpart 的清理命令写成一个批处理脚本每次烧录前双击运行省去手动敲命令的麻烦。脚本内容大概是这样echo off diskpart /s clean_disk.txt pause其中clean_disk.txt里写好 select disk 和 clean 命令。这样每次只需要确认磁盘编号剩下的自动完成。当然脚本里的磁盘编号要提前确认好别写错了。
阅读完成 · 觉得有帮助?