如何从MSI的Binary表中提取存储的脚本文本?
从MSI Binary表检索存储脚本的方法
你的代码思路是正确的,通过查询Binary表的Data字段获取流数据后,只需要将Stream转换为文本内容即可——Binary表中存储的脚本通常是文本格式(如VBScript、JScript)。
完整实现代码
string query = $"SELECT `Data` FROM `Binary` WHERE `Name`='{sourceName_}'"; using (View view = db_.OpenView(query)) { view.Execute(); Record record = view.Fetch(); if (record != null) // 先判断是否找到对应记录,避免空引用 { using (Stream data = record.GetStream(1)) using (StreamReader reader = new StreamReader(data)) { string scriptContent = reader.ReadToEnd(); // 此处已获取完整脚本内容,可直接使用或保存 Console.WriteLine(scriptContent); } } }
关键注意事项
- 必须用
using包裹Stream和StreamReader,确保资源被正确释放 - 如果脚本使用特殊编码(比如UTF-16),可以在StreamReader构造时指定编码,示例:
new StreamReader(data, Encoding.Unicode)
内容的提问来源于stack exchange,提问作者KingVoodoo
相关产品推荐
相关产品推荐

