财讯中国

Win10竟会损坏用户文件!可通过Windows Update升级KB5003214补丁进行修

来源:太平洋电脑网 2021-06-03 08:01:02

如果你是一名音乐发烧友,那么应该知道Flac这种常见的无损音乐格式。Flac音乐文件支持metadata,用户可以编辑metadata,让音乐文件带有艺术家、所属专辑、音轨等等信息。

通常来说,metadata和音频数据并不相关,修改metadata并不会影响音频本身。

但是,近日微软官方公布了Win10中存在一个Bug,在Win10中用资源管理器修改Flac文件的metadata,竟会导致音频的损坏!

根据Windows Latest的报道,微软最新发布的一份支持文件披露,如果在Win10的2004或者更高版本中,使用文件资源管理器修改Flac音乐文件的metadata,就会损耗Flac音频文件。

这个Bug在Win10专业版、家庭版、企业版、工作站版乃至其他版本的Win10中均有出现。

根据微软本月早些时候发布的支持文件,Win10的文件资源管理器导致了这个错误,它破坏了Flac文件头包含的ID3框架也就是metadata,而这个ID3框架负责存储音频的注释,例如音乐标题、艺术家、专辑、曲目编号等。

在Win10上,Flac的处理程序忽视了ID3框架,该程序认为Flac文件在使用4字节的文件头,当Flac文件被Win10编辑的时候,ID3框架被覆盖了,导致没有了开始代码,导致了音乐播放器无法识别被修改后的文件。

因此,在Win10中,如果你直接用文件资源管理器修改Flac音乐文件的标题、艺术家等metadata,会导致该文件无法播放。

幸运的是,微软已经确定了Bug的根本原因,用户可以通过Windows Update升级KB5003214补丁进行修复。

在KB5003214补丁中,微软确认了上文提到的错误已经被修复,修改了Flac的标题、艺术家等metadata后,Flac不会再变得无法播放。

而对于已经损坏了的Flac文件,微软则发布了一个PowerShell脚本来进行修复,运行该脚本后Flac文件即可重新播放,不过已经从ID3框架中丢失了的metadata信息并不能恢复。

下面是利用PowerShell脚本修复Flac文件的具体方法。

1、开启记事本;

2、复制以下字符,粘贴到记事本中:

# Copyright 2021 Microsoft

# This script will repair a FLAC file that has been corrupted by Media Foundation in reference to KB5003430.

# Refer to KB5003430 for further information

param(

[parameter(Mandatory=$true,

HelpMessage="The path to the FLAC file that has been corrupted by Media Foundation",

ValueFromRemainingArguments=$true)]

[ValidateScript({ -not [String]::IsNullOrEmpty($_) -and (Test-Path $_) })]

[String]$File

)

# We need to back up the current file incase we have any errors

$FileDirectory = Split-Path -Resolve $File

$Filename = Split-Path -Leaf -Resolve $File

$FullPath = Join-Path -Resolve $FileDirectory $Filename

$Filename = [String]::Format("Backup_{0:yyyyMMdd_hhmmss}_{1}", [DateTime]::Now, $Filename)

$BackupLocation = Join-Path $FileDirectory $Filename

Write-Output "Microsoft FLAC Repair Tool. This tool will repair a FLAC audio file that was corrupted when editing its details."

Write-Output "Affected File: $FullPath"

Write-Output "A backup of the file will be made: $BackupLocation"

Write-Output "Do you wish to continue?"

$choice=$host.ui.PromptForChoice("Fixing FLAC Script", "Do you wish to continue", ('&Yes', '&No'), 1)

function ParseStreamInfoMetadataBlock([System.IO.FileStream]$stream)

{

$blockType = $stream.ReadByte()

$lastBlock = ($blockType -shr 7) -ne 0

$blockType = $blockType -band 0x7F

if ($blockType -ne 0)

{

return $false

}

$blockSize = (($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())

if ($blockSize -lt 34)

{

return $false

}

$minAudioBlockSize = ($stream.ReadByte() -shl 8) -bor $stream.ReadByte()

$maxAudioBlockSize = ($stream.ReadByte() -shl 8) -bor $stream.ReadByte()

if ($minAudioBlockSize -lt 16 -or $maxAudioBlockSize -lt 16)

{

return $false

}

$minFrameSize = (($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())

$maxFrameSize = (($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())

$sampleInfo = (($stream.ReadByte() -shl 24) -bor ($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())

$sampleRate = $sampleInfo -shr 12

$channelCount = (($sampleInfo -shr 9) -band 0x7) + 1

$bitsPerSample = (($sampleInfo -shr 4) -band 0x1F) + 1

[UInt64]$sampleCount = (($stream.ReadByte() -shl 24) -bor ($stream.ReadByte() -shl 16) -bor ($stream.ReadByte() -shl 8) -bor $stream.ReadByte())

$sampleCount = (([UInt64]$sampleInfo -band 0xF) -shl 32) -bor $sampleCount

$MD5HashBytes = New-Object byte[] 16

$stream.Read($MD5HashBytes, 0, $MD5HashBytes.Length)

$MD5Hash = [Guid]($MD5HashBytes)

if ($sampleRate -eq 0)

{

return $false

}

# Passing these checks means that we likely have a stream info header and can rebuild the file

Write-Output "File Stream Information"

Write-Output "Sample Rate: $sampleRate"

Write-Output "Audio Channels: $channelCount"

Write-Output "Sample Depth: $bitsPerSample"

Write-Output "MD5 Audio Sample Hash: $MD5Hash"

return $true

}

if ($choice -eq 0)

{

Copy-Item $FullPath -Destination $BackupLocation -Force

$stream = [System.IO.File]::Open($FullPath, [System.IO.FileMode]::Open)

$stream.Seek(4, [System.IO.SeekOrigin]::Begin)

while ($stream.ReadByte() -eq 0) {}

# We now need to figure out where a valid FLAC metadata frame begins

# We are likely pointing to the last byte of the size member so we'll seek back 4 bytes and retry

$flacDataStartPosition = $stream.Position - 4

$stream.Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

while (-not(ParseStreamInfoMetadataBlock($stream)))

{

$flacDataStartPosition = $flacDataStartPosition + 1

$stream.Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

}

# Insert the start code

$stream.Seek($flacDataStartPosition, [System.IO.SeekOrigin]::Begin)

if (Test-Path "$FullPath.tmp")

{

Remove-Item "$FullPath.tmp"

}

$fixedStream = [System.IO.File]::Open("$FullPath.tmp", [System.IO.FileMode]::CreateNew)

[byte[]]$startCode = [char[]]('f', 'L', 'a', 'C');

$fixedStream.Write($startCode, 0, $startCode.Length)

$stream.CopyTo($fixedStream)

$stream.Close()

$fixedStream.Close()

Move-Item -Force "$FullPath.tmp" $FullPath

}

3、保存文件,在“另存为”对话框中,将目录定位到你想要保存PowerShell脚本的位置;

4、在文件名输入框中,输入“FixFlacFiles.ps1”,将另存为文件的类型更改为Text Documents (*.txt);

5、进入到你保存该PowerShell脚本的目录;

6、右键点击刚刚保存的脚本,然后选择“使用PowerShell运行”;

7、出现提示时,输入无法播放的Flac文件的文件名,然后按下回车键。

微软建议大家安装本月推送的可选累积更新,以避免修改Flac文件metadata出现的问题。

标签: Win10 损坏用户文件 Bug 无损音乐格式

相关新闻

支持LTE Advanced的Surface Pro 8现在可以从微软官网订购
2022-01-12 18:13:39
Check Point安全报告显示去年企业受到的总体网络攻击量有明显增加
2022-01-12 18:13:33
LG新能源称凭借积压订单将很快击败宁德时代
2022-01-12 18:13:24
Intel NUC迷你机产品线调整 12代酷睿平民版被砍
2022-01-12 18:13:18
美国因感染新冠病毒住院治疗人数达到历史最高水平
2022-01-12 18:13:13
NVIDIA宣布DLDSR AI超分辨率技术:驱动集成、无需游戏优化
2022-01-12 18:13:08
5部手机同时抽中2300元“优惠券” 扫地机器人大奖背后是何套路?
2022-01-12 18:13:02
波音2021年飞机交付量大增 但仍落后于对手空客
2022-01-12 18:12:55
辉瑞疫苗合作商BioNTech:今年新冠疫苗的收入可能会减少
2022-01-12 18:12:50
加拿大研究显示因感染新冠病毒住院的儿童出现严重并发症的风险较高
2022-01-12 18:12:43
加拿大魁北克省将对拒绝接种新冠疫苗者处以高额罚款
2022-01-12 18:12:36
从27个行业标杆,看2022营销与经营风向标|巨量引擎引擎奖榜单公布 (FOR seo)
从27个行业标杆,看2022营销与经营风向标|巨量引擎引擎奖榜单公布 (FOR seo)
2022-01-12 16:50:28
入场2022,从看懂这16个案例开始|巨量引擎引擎奖榜单公布
入场2022,从看懂这16个案例开始|巨量引擎引擎奖榜单公布
2022-01-12 14:16:53
iPhone14或采用药丸形打孔屏 最全外形渲染图都在这里了
2022-01-12 13:58:39
LG发布4K 160Hz游戏显示器32GQ950
2022-01-12 13:58:33
iPhone 13 Pro DxO续航测试59小时
2022-01-12 13:58:22
联想拯救者Y90已入网:68W祖传快充
2022-01-12 13:58:16
腾讯全新游戏品牌“腾讯先锋”公布:不用下载
2022-01-12 13:58:08
苹果抛光布重新上架 145元当天发货
2022-01-12 13:46:53
10秒销售额破亿!iQOO 9今日开售战报发布
2022-01-12 13:46:48
文战元宇宙
2022-01-12 13:46:44
下月见!Redmi K50电竞版跑分曝光
2022-01-12 13:46:39
小米有责任,捐赠1000万成立体育奖学金
2022-01-12 13:46:34
配备单色OLED屏 山灵正式发布UA系列便携解码耳放UA5
2022-01-12 13:46:29
荣耀50系列荣获“2021年度经典焕新品牌”
2022-01-12 13:46:23
机构发布报告称智能手表的销量将继续强劲增长
2022-01-12 13:46:17
可选RTX 3070 Ti 150W满功耗释放 联想拯救者 Y9000P 2022将发布
2022-01-12 13:46:12
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-12 13:34:39
2022环境检测机构使命再升级
2022环境检测机构使命再升级
2022-01-12 09:59:21
苹果搜歌神器Shazam推出可识别播放歌曲的Chrome浏览器扩展
苹果搜歌神器Shazam推出可识别播放歌曲的Chrome浏览器扩展
2022-01-12 08:30:09
微软突然公开macOS漏洞细节!苹果发文感谢并称已确认修复
微软突然公开macOS漏洞细节!苹果发文感谢并称已确认修复
2022-01-12 08:28:09
ColorOS 12.1南德TUV A级认证出炉:可坚持36个月流畅不卡顿
ColorOS 12.1南德TUV A级认证出炉:可坚持36个月流畅不卡顿
2022-01-12 08:26:11
企业微信4.0正式发布:强化品牌直播带货并全面接入腾讯文档
企业微信4.0正式发布:强化品牌直播带货并全面接入腾讯文档
2022-01-12 08:24:25
微软为Win11版Defender设计全新界面:调整UI并重构底层界面
微软为Win11版Defender设计全新界面:调整UI并重构底层界面
2022-01-12 08:22:56
曝iPhone 14三种屏幕对比图出炉:药丸打孔屏大幅增加屏占比
曝iPhone 14三种屏幕对比图出炉:药丸打孔屏大幅增加屏占比
2022-01-12 08:21:28
iPhone14或采用药丸形打孔屏:屏占比大幅提升,最高容量2TB
iPhone14或采用药丸形打孔屏:屏占比大幅提升,最高容量2TB
2022-01-12 08:19:22
曝三星Galaxy S22系列处理器标配高通骁龙8!频率可达1300MHZ
曝三星Galaxy S22系列处理器标配高通骁龙8!频率可达1300MHZ
2022-01-12 08:15:03
NVIDIA宣布DLDSR AI超分辨率技术:可提升任意游戏性能70%
NVIDIA宣布DLDSR AI超分辨率技术:可提升任意游戏性能70%
2022-01-12 08:13:37
PCIe 6.0正式发布:允许数据双向流动,x16带宽增至256GB/s
PCIe 6.0正式发布:允许数据双向流动,x16带宽增至256GB/s
2022-01-12 08:12:23
苹果:App开发者已经挣了2600亿
2022-01-12 06:16:47
米哈游侧目!腾讯人气手游一年吸金178亿:你贡献多少
2022-01-12 06:16:42
别老拿爱优腾跟Netflix比 根本不是一码事
2022-01-12 06:16:36
Windows 11效率将更高 提高文件管理器性能
2022-01-12 06:16:28
你用多沉的哑铃?这个智能产品对着说就行
2022-01-12 06:16:21
Intel人事调整:CFO退休 新女将接任PC业务主管
2022-01-12 06:16:06
最佳开发商 Xbox可以FaceTime 通话
2022-01-12 06:15:59
全球销量破亿!任天堂Switch OLED国行版开卖 只要2599元
2022-01-12 06:15:55
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-12 06:05:06
从核酸检测到健康码,为什么系统总是“崩了”?
2022-01-12 00:09:00
美联社宣布进军NFT 主打新闻摄影市场
2022-01-12 00:08:55
种植牙将纳入两级医保集采 降价幅度有望达到60%-90%
2022-01-12 00:08:46
1月28日至3月13日,北京禁飞“低慢小”航空器
2022-01-12 00:08:39
邢台18岁女孩百草枯中毒 肺移植后已经可以下床活动
2022-01-12 00:08:33
全球上层海洋温度连续第六年打破纪录
2022-01-12 00:08:28
女外卖骑手的飞驰人生:成为零差评收割机 在男人堆里杀出一条活路
2022-01-12 00:08:17
iPhone 14 Pro与iPhone 13 Pro同框照曝光:新老外形对比强烈
2022-01-12 00:08:10
Rivian在2021年生产了超1000辆电动汽车 符合下调预期
2022-01-11 23:39:04
达拉斯希望成为福特下一个自动驾驶汽车工厂的所在地
2022-01-11 23:38:58
12月新能源车企销量:比亚迪9.3万辆中国第一 特斯拉破7万
2022-01-11 23:38:47
富士康印度iPhone代工厂将于本周三小规模复工
2022-01-11 23:38:39
iPhone 14 Pro与iPhone 13 Pro同框照曝光
2022-01-11 23:38:33
12 代酷睿处理器的游戏 DRM 加密兼容问题已解决
2022-01-11 23:38:26
微软发现苹果macOS“Powerdir”漏洞 苹果已修复
2022-01-11 23:38:20
谷歌高管澄清 没要求苹果在安卓上提供iMessage
2022-01-11 23:38:14
微软公开macOS漏洞“Powerdir”细节 苹果已更新修复
2022-01-11 23:38:07
消息称苹果有望在 2024 年发布采用三星屏幕的 OLED iPad
2022-01-11 23:38:01
Omdia服务提供商聚焦:BT通过Eagle-i呈现全球安全服务野心
2022-01-11 23:37:53
2023年北京市工业互联网核心产业规模将达1500亿元
2022-01-11 23:37:48
中兴通讯携手联通完成算力网络服务调度PoC验证
2022-01-11 23:32:53
腾讯Switch发布微信红包:任你花!
2022-01-11 23:32:38
已经定版 小米12 Ultra将在春节之后发布
2022-01-11 23:32:20
RGB大Logo绝了!联想拯救者Y90游戏手机入网:搭载68W超级快充
2022-01-11 23:31:52
性能全方位提升 映众RTX3080冰龙海量版首发
2022-01-11 23:31:43
技嘉发布升级版GeForce RTX 3080 12G显卡
2022-01-11 23:31:36
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-11 23:20:59
微软突然公开macOS漏洞细节:苹果已更新修复
2022-01-11 17:23:24
360回应弹窗广告太多:持续优化用户体验 禁止投放诈骗
2022-01-11 17:23:17
荣耀Magic V折叠屏来自京东方:屏占比95%
2022-01-11 17:23:10
一加真首发LTPO 2.0!跟友商的LTPO 2.0不一样
2022-01-11 17:23:05
惠普发布OMEN系列新款显示器 4K、144Hz旗舰规格
2022-01-11 17:22:58
LG化学拟投资4.19亿美元在韩国新建阴极材料工厂
2022-01-11 17:22:48
刘海变胶囊 iPhone 14最新外形概念图感受下
2022-01-11 17:22:43
支持五大卫星定位 续航14天! 荣耀手表GS 3发布
2022-01-11 17:22:36
荣耀Magic V折叠手机为大屏优化:微信边聊边看
2022-01-11 17:22:22
Intel解决12代酷睿兼容问题 加密游戏不再闪退
2022-01-11 17:22:18
iQOO 9等机型通过电竞移动终端硬件技术要求标准
2022-01-11 17:21:51
小米12官方拆机图赏:小尺寸旗舰不白叫
2022-01-11 17:21:42
不上院线!《蜘蛛侠英雄无归》2月底上数字版
2022-01-11 17:21:27
千元机新标杆来了!魅蓝回归首款手机官宣:魅蓝10明天见
2022-01-11 17:21:17
用特斯拉挖矿月入5000 网友实测真相了
2022-01-11 17:21:11
229美元 苹果官网/Beats官网下架Beats Pill+音箱
2022-01-11 17:21:02
百万年终奖稳了 《王者荣耀》全球吸金178亿
2022-01-11 17:20:50
联想陈劲:moto edge X30有望成为618最保值机型
2022-01-11 17:20:37
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-11 17:11:33
数“聚”保定 共赢未来
数“聚”保定 共赢未来
2022-01-11 16:27:40
科大讯飞携手玩创未来,开启高质量课后服务合作
科大讯飞携手玩创未来,开启高质量课后服务合作
2022-01-11 12:02:31
招聘信息曝光微软的元宇宙计划Vortex
2022-01-11 11:55:59
或考虑进军电动自行车领域:Rivian申请相关商标
2022-01-11 11:55:54
[图]iOS端Gmail应用更新:新增小部件可显示最新3封邮件
2022-01-11 11:55:48
宝马全新方向盘曝光 酷似特斯拉矩形方向盘
2022-01-11 11:55:43

热门文章

热点专题