SQLite 由于 mscoree.dll 损坏导致 BadImageFormatException 试图加载格式不正确的程序

news/2024/9/22 20:27:54/文章来源:https://www.cnblogs.com/lindexi/p/18397604

本文记录 SQLite.Interop.dll 由于 mscoree.dll 文件损坏而在加载时抛出 BadImageFormatException 错误,错误信息是 0x8007000B 试图加载格式不正确的程序

对应的英文错误信息如下

An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

常见的错误堆栈如下

System.BadImageFormatException: 试图加载格式不正确的程序。 (0x8007000B)in SQLiteErrorCode UnsafeNativeMethods.sqlite3_open_interop(byte[] utf8Filename, byte[] vfsName, SQLiteOpenFlagsEnum flags, int extFuncs, ref IntPtr db)in void SQLite3.Open(string strFilename, string vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, int maxPoolSize, bool usePool)in void SQLiteConnection.Open()in void AsyncDbConnection.Open()in IAsyncDbConnection DataConnection.EnsureConnection(bool connect)in DbConnection DataConnection.get_Connection()in int DataConnection.LinqToDB.Common.Internal.IConfigurationID.get_ConfigurationID()in new Query(IDataContext dataContext, Expression expression)in new Query<T>(IDataContext dataContext, Expression expression)in Query<T> Query<T>.CreateQuery(ExpressionTreeOptimizationContext optimizationContext, ParametersContext parametersContext, IDataContext dataContext, Expression expr)in Query<T> Query<T>.GetQuery(IDataContext dataContext, ref Expression expr, out bool dependsOnParameters)in Query<T> ExpressionQuery<T>.GetQuery(ref Expression expression, bool cache, out bool dependsOnParameters)in TResult ExpressionQuery<T>.System.Linq.IQueryProvider.Execute<TResult>(Expression expression)in TSource Queryable.FirstOrDefault<TSource>(IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)in LocalCoursewareEntry CoursewareSqliteDbReader.GetCoursewareEntry(string localId)+(ITable<LocalCoursewareEntry> tb) => { }in TReturn CoursewareSqliteDbOperator.ExecuteOnCoursewareTable<TReturn>(Func<ITable<LocalCoursewareEntry>, TReturn> query)+(DataConnection conn) => { }in TReturn SqliteDbOperator.ExecuteQuery<TReturn>(Func<DataConnection, TReturn> func)

System.BadImageFormatException: 试图加载格式不正确的程序。 (0x8007000B)?, in SQLiteErrorCode UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op)?, in bool SQLite3.StaticIsInitialized()

错误原因是 mscoree.dll 文件损坏,这个 mscoree.dll 不是放在应用程序文件夹下的,所在的系统路径如下

  • x64: C:\Windows\System32\mscoree.dll
  • x86: C:\Windows\SysWOW64\mscoree.dll

如果当前能抓到复现的系统环境,可以尝试用自己开发机正常的 mscoree.dll 替换出现问题的机器的文件,预期替换之后能正常工作。如替换之后不能正常工作,可能是错误将 x86 和 x64 文件给混了,或者是 SQLite.Interop.dll 文件本身或其他依赖出错

此问题如使用 Dependencies 工具,将 SQLite.Interop.dll 文件拖入,则可以看到 mscoree.dll 被打了感叹号

我尝试将一个用户设备上的 mscoree.dll 拖回来分析,使用 dumpbin 工具分析提示无效的格式文件

C:\Program Files\Microsoft Visual Studio\2022\Professional>dumpbin C:\lindexi\Work\mscoree.dll
Microsoft (R) COFF/PE Dumper Version 14.40.33811.0
Copyright (C) Microsoft Corporation.  All rights reserved.Dump of file C:\lindexi\Work\mscoree.dll
C:\lindexi\Work\mscoree.dll : warning LNK4048: 无效的格式文件;已忽略Summary

尝试使用二进制查看工具打开 mscoree.dll 文件

读取到的内容完全不是 PE 文件格式,证明文件完全被损坏

我没有继续了解为什么 mscoree.dll 文件出错了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/792386.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dotnet 已知问题 警惕 StreamReader 的 EndOfStream 卡住线程

在 dotnet 里面,咱会经常使用 StreamReader 辅助类读取 Stream 的内容,比如按行读取等。如果在判断是否读取完成时,使用的是 StreamReader 的 EndOfStream 属性,则可能破坏原本的异步出让逻辑,导致线程被卡住对于带 UI 的应用程序,如 WPF 等应用来说,如果 UI 线程被卡住…

使用 Dependify 工具探索 .NET 应用程序依赖项

在大型项目中,由于各种组件的复杂性和互连性,管理依赖项可能变得具有挑战性。如果没有适当的工具或文档,可能很难浏览项目并对依赖项做出假设。以下是在大型项目中难以导航项目依赖项的几个原因:复杂性:大型项目通常由许多模块组成。了解这些依赖项如何相互交互可能会让人…

读软件设计的要素01概念

概念1. 概念 1.1. 一个软件,从运行于手机上的最小程序到大型的企业系统,都是由概念组成的,每个概念都是独立的功能单元 1.2. 软件中的可用性问题,经常可以追溯到其底层概念1.2.1. 概念帮助识别软件的不可用性1.3. 概念都是以同样形式在各种软件中重复使用的1.3.1. 将设计分…

关于在powershell与cmd查找vue版本时结果不一致

在powershell中vue版本显示为2.9.6而在Cmd中显示为@vue/cli 5.0.8原因:这是由于博主先前旧版本下载了vue2.9.6,而在卸载旧版本2.9.6时候仅删除了vue与vue.cmd文件 而powershell会先运行vue.ps1(.ps1后缀为powershell文件)来获取你的版本号 解决方案:将vue,vue.cmd,vue.ps1…

LUNARiA

本文同步发布于我的网站也算是头一次在没有任何安利和剧透,仅在看了简介的情况下就直接下单并开始游玩一部gal了。果然,没有给我留下什么遗憾呢。 游玩日志 SKYOUT-FOREVER 《LUNARiA》的背景设定在科技腾飞、算力大幅增长、AI与VR遍及各行各业、一个名为Cozmo的虚拟世界已经…

Comfyui 基础教程(一) —— 本地安装部署

前言 前面一篇文章已经介绍过,ComfyUI 和 Stable Diffusion 的关系。不清楚的朋友,看传送门 Stable Diffusion 小白的入坑铺垫 。 WebUI 以及 ComfyUI 不等于 Stable Diffusion,可以简单粗暴一点的理解为方便运行某些大模型的工具。由于本人在接触过 ComfyUI 之后,就基本放…

337. 打家劫舍 III(leetcode)

https://leetcode.cn/problems/house-robber-iii/description/基础树形dp,要点是f的定义灵神讲的很好:https://www.bilibili.com/video/BV1vu4y1f7dn/?vd_source=1bb76d0400eba0d49ad4c1dd07bc4249 /*** Definition for a binary tree node.* public class TreeNode {* in…

深度学习环境配置(windows 11)

安装Anaconda下载地址运行安装程序,记得要勾选创建系统变量,忘记勾选的请参考anaconda如何配置环境变量。正确配置后,在cmd命令行中输入conda --version后可以输出conda版本信息。附上conda常用操作命令: #创建环境(指定python版本) conda create -n NAME python=*.*#激活…

Text Augmented Spatial-aware Zero-shot Referring Image Segmentation论文阅读笔记(EMNLP23 Findings)

Motivation & Method 关注的任务为zero-shot referring image segmentation,模型无法获得pixel-level的分割标注。之前的方法通常使用预训练的多模态模型如CLIP,然而CLIP使用图像文本对进行训练,难以做到image local patch与referring sentence的细粒度对齐。为此作者提…

Error response from daemon: This node is not a swarm manager.

转载请注明出处:在环境上通过 docker 查看节点列表时,报错如下:解决方法: 具体code如下:root@controller1:~# docker swarm init --advertise-addr 127.0.0.1 Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to …

全网最适合入门的面向对象编程教程:45 Python 实现常见数据结构-链表、树、哈希表、图和堆

数据结构是计算机科学中的一种组织和存储数据的方式,它决定了数据的访问方式和操作效率,数据结构的选择和实现对程序的性能和设计至关重要。本文主要讲述了如何使用Python语言和内置库实现常见数据结构。全网最适合入门的面向对象编程教程:45 Python 实现常见数据结构-链表、…

Unicode编码介绍

什么是Unicode编码? Unicode是字符编码规范,它定义了所有文字的编码规则。说通俗点就是它按照某个规则给每个字符都分配了一个数字编号(比如:A的编号为65或0x0041,万的编号为19981或0x4e0d),相当于是一个编号库。这个数字编号也叫Unicode码。最开始这个编号使用2个字节表…