在一台通过 USB 外置固态硬盘启动的 Windows 11 电脑上,出现了一个比较特殊的问题:

  • U 盘插入后有提示音;
  • 设备管理层面能够识别;
  • 资源管理器中却看不到盘符;
  • SD 卡通过读卡器接入后也出现相同情况;
  • 手动检查发现磁盘处于“离线”和“只读”状态。

最终确认,这并不是 USB 接口、驱动或 U 盘本身损坏,而是 Windows 当前系统的 SAN 策略导致新接入的磁盘被自动设为离线。


一、最初现象

系统安装在 USB 外置固态硬盘中,Windows 本身可以正常启动和使用。

插入普通 U 盘后,系统会发出设备连接提示音,但资源管理器中没有出现新的盘符。

初步怀疑包括:

  • USB 存储驱动被禁用;
  • 组策略禁止可移动存储;
  • U 盘没有分配盘符;
  • 磁盘被设为离线;
  • 磁盘被设为只读;
  • 文件系统不受 Windows 支持。

二、检查 USB 设备和磁盘状态

在 PowerShell 中执行:

Get-PnpDevice -PresentOnly |
Where-Object { $_.Class -in @('DiskDrive','USB') } |
Format-Table Status,Class,FriendlyName,InstanceId -Auto

结果显示:

  • USB 控制器状态正常;
  • USB Mass Storage Device 状态为 OK
  • U 盘本身也已经被 Windows 识别。

接着检查磁盘:

Get-Disk |
Format-Table Number,FriendlyName,BusType,OperationalStatus,IsOffline,IsReadOnly,Size -Auto

发现新接入的 U 盘状态为:

OperationalStatus : Offline
IsOffline         : True
IsReadOnly        : True

这说明设备没有损坏,而是被 Windows 主动设成了离线和只读。


三、排除 USB 存储驱动和组策略问题

检查 USB 存储驱动:

reg query "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /v Start

正常结果为:

Start    REG_DWORD    0x3

0x3 表示 USB 存储驱动正常启用。

如果显示为 0x4,才代表 USB 存储驱动被禁用。

继续检查可移动存储策略:

reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\RemovableStorageDevices" /s

系统提示注册表项不存在,说明没有配置禁止读取、写入或访问可移动存储设备的策略。

因此可以排除:

  • USBSTOR 驱动被禁用;
  • Windows 组策略禁止 U 盘;
  • USB 控制器异常。

四、用管理员 PowerShell 手动恢复磁盘

普通权限的 PowerShell 虽然可以读取磁盘状态,但修改时会提示:

Access Denied

因此必须使用管理员权限。

可以在当前 PowerShell 中执行:

Start-Process powershell -Verb RunAs

在弹出的管理员 PowerShell 中,执行:

Set-Disk -Number 6 -IsReadOnly $false
Set-Disk -Number 6 -IsOffline $false

其中 6 是当时 U 盘对应的磁盘编号,实际操作时必须通过 Get-Disk 确认,不能直接照抄。

再次检查:

Get-Disk -Number 6 |
Format-List Number,FriendlyName,OperationalStatus,IsOffline,IsReadOnly

状态恢复为:

OperationalStatus : Online
IsOffline         : False
IsReadOnly        : False

此时 U 盘已经可以在资源管理器中正常显示和使用。


五、SD 卡也出现相同问题

之后使用 USB 读卡器连接一张 SD 卡。

系统同样发出连接提示音,但资源管理器中没有显示。

检查后发现,SD 卡也被识别为一个新的 USB 磁盘,但状态仍然是:

Offline
ReadOnly

分区信息显示 SD 卡中包含:

  • 一个 Windows 可识别的 FAT32 分区;
  • 一个 Windows 无法识别的分区。

这类情况常见于 Linux、macOS 启动盘或多分区工具盘。

Windows 不显示不支持的分区是正常现象,但 FAT32 分区原本应该能够显示。真正阻止它显示的原因,仍然是整块磁盘处于离线状态。

由于不同 U 盘和 SD 卡都出现相同现象,问题已经不再像是单个设备故障,而更像是系统级磁盘策略。


六、检查 SAN 策略和自动挂载

进入 DiskPart:

diskpart

检查 SAN 策略:

san

结果为:

SAN Policy : Offline Internal

再检查自动挂载:

automount

结果为:

Automatic mounting of new volumes enabled.

这说明:

  • Windows 的自动挂载功能本身正常;
  • 但 SAN 策略会先把某些新接入磁盘设为离线;
  • 磁盘没有上线,自然也就无法自动分配盘符。

automount enabled 并不能覆盖 SAN 策略。


七、为什么会出现 Offline Internal

这台电脑的 Windows 安装在 USB 外置固态硬盘中,属于外置启动环境。

Windows 在这类环境中可能会采用:

Offline Internal

其设计目的通常是保护宿主机内部磁盘,避免外置 Windows 启动后自动挂载或修改内部硬盘。

这种策略在 Windows To Go 或类似外置启动环境中具有一定合理性。

但它也可能带来副作用:

  • 新插入的 U 盘被设为离线;
  • SD 卡被设为离线;
  • 磁盘同时表现为只读;
  • 资源管理器中没有盘符;
  • 每次都需要管理员手动上线。

八、永久修改为自动上线

由于这台电脑的内部磁盘已经没有分区,也没有实际使用,因此不再需要利用 SAN 策略保护内部磁盘。

在管理员 PowerShell 中进入 DiskPart:

diskpart

执行:

san policy=onlineall

检查结果:

san

显示:

SAN Policy : Online All

退出:

exit

完整过程如下:

diskpart
san policy=onlineall
san
exit

系统提示:

DiskPart successfully changed the SAN policy for the current operating system.

说明修改已经成功。


九、修改后的效果

SAN 策略改成 Online All 后:

  • 新插入的 U 盘会自动上线;
  • SD 卡会自动上线;
  • Windows 可以自动为支持的分区分配盘符;
  • FAT32、NTFS、exFAT 等支持的文件系统会正常显示;
  • Linux、macOS 等 Windows 不支持的分区仍然不会显示;
  • 不需要每次手动执行 Set-Disk

已经插着的设备,通常需要拔下后重新插入一次。

也可以执行:

Get-Disk

确认新设备状态是否为:

Online
False
False

分别对应:

  • 磁盘在线;
  • 不是离线;
  • 不是只读。

十、需要注意的风险

将 SAN 策略设置为:

Online All

意味着 Windows 会尝试自动上线它发现的所有磁盘。

如果电脑内部磁盘中仍然保存着 macOS、Linux、RAID、Fusion Drive 或其他重要数据,应谨慎修改。

即使 Windows 无法识别某些文件系统,也不要随意执行以下操作:

Initialize Disk
Format
Delete Partition
Clear-Disk
Clean

这些操作可能破坏原有磁盘结构。

如果内部磁盘仍有重要数据,更安全的做法是保留:

Offline Internal

并在需要使用某个 U 盘时单独执行:

Set-Disk -Number <磁盘编号> -IsReadOnly $false
Set-Disk -Number <磁盘编号> -IsOffline $false

十一、排查思路总结

遇到“U 盘插入有声音,但资源管理器不显示”时,可以按照以下顺序排查:

1. 检查设备是否被识别

Get-PnpDevice -PresentOnly |
Where-Object { $_.Class -in @('DiskDrive','USB') }

2. 检查磁盘是否离线或只读

Get-Disk

重点查看:

OperationalStatus
IsOffline
IsReadOnly

3. 检查分区和盘符

Get-Partition
Get-Volume

4. 检查 USB 存储驱动

reg query "HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR" /v Start

5. 检查可移动存储策略

reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\RemovableStorageDevices" /s

6. 检查 SAN 策略

diskpart
san
automount
exit

7. 根据实际环境决定处理方式

临时恢复单个磁盘:

Set-Disk -Number <磁盘编号> -IsReadOnly $false
Set-Disk -Number <磁盘编号> -IsOffline $false

永久允许所有磁盘自动上线:

diskpart
san policy=onlineall
exit

结论

本次问题的根因不是 U 盘故障,也不是 USB 驱动或组策略禁用,而是外置启动 Windows 使用了:

SAN Policy : Offline Internal

这项策略导致新接入的 U 盘和 SD 卡被自动设为离线和只读。

在确认内部磁盘没有重要数据、也不需要隔离保护后,将 SAN 策略修改为:

SAN Policy : Online All

即可恢复 U 盘和 SD 卡自动识别、自动上线和自动分配盘符。

Leave a Reply

Your email address will not be published. Required fields are marked *