应用程序无法正常启动(0x000007b)或者找不到dll文件(以vcruntime140d.dll为例)的原因原理分析和解决方法(亲测已解决)

2023-10-26

一、问题1:由于找不到vcruntime140d.dll。无法继续执行代码。重新安装程序可能会解决此问题。

最近运行exe文件的时候出现了:“由于找不到vcruntime140d.dll。无法继续执行代码。重新安装程序可能会解决此问题。”
在这里插入图片描述

上网找了很多文章,也下了一些软件来修复,发现他们都没有说清楚问题根本原因和解决方法,所以写篇文章来记录解决这个问题的原理和过程。
首先,它是vcruntime140d.dll文件找不到了,就说明程序在我们的电脑上的dll路径当中都没有找到这个dll文件。
大致的顺序是这样的:
1)应用程序所在目录
2)系统目录,GetSystemDirectory获取
3)16位系统目录
4)Windows目录,用GetWindowsDirectory获取
5)运行程序的当前目录
6)Path环境变量
具体的顺序会根据操作系统和注册表SafeDllSearchMode键的值会有所变化。想了解的可以参考我之前的文章《DLL劫持病毒的分析》:https://blog.csdn.net/Onlyone_1314/article/details/108818379
回到vcruntime140d.dll文件找不到的问题,那我们就下载一个vcruntime140d.dll,放在当前exe文件下或者放在Windows目录下都行,放在当前exe文件下就是只让你这次的这个文件调用,放在Windows目录下下次就可以让别的程序也调用。

二、问题2:应用程序无法正常启动(0x000007b)。请单击“确定”关闭应用程序。

开始随便下载了一个vcruntime140d.dll,放在当前exe文件的目录下,又出现了下面这个问题:“应用程序无法正常启动(0x000007b)。请单击“确定”关闭应用程序。”
在这里插入图片描述

这里就涉及到另一个问题:操作系统的位数和dll文件的位数。任何一个不匹配,就会出现这个问题。我出现这个问题就是这个test.exe是个32位的程序,我们查看test.exe的基本信息:
在这里插入图片描述

发现它是用Visual C++编写的Windows 32位控制台程序。但我下的是一个64位的vcruntime140d.dll:
在这里插入图片描述

所以程序是能够找到我的这个vcruntime140d.dll的,没用报之前“找不到vcruntime140d.dll”的错,但是因为位数不匹配导致了“应用程序无法正常启动”。
所以我们重新下一个32位的vcruntime140d.dll文件,放在当前exe文件所在的目录:
在这里插入图片描述

运行test.exe:
在这里插入图片描述

成功解决问题。

三、Windows目录下的SysWOW64和System32的问题

另外就是关于把应该把dll文件放在Windows目录下的SysWOW64还是System32:
System32是Windows操作系统的系统文件夹,是操作系统的中枢,存放的是64位的系统文件。
SysWOW64(Windows-on-Windows 64-bit)是一个Windows操作系统的子系统, 能够运行32位应用 windows操作系统程序, 并且在所有的64-bit 版本的windows上都存在。
所以我们应该把test.exe需要的dll文件放在SysWOW64文件夹下面:
在这里插入图片描述

也能成功解决问题。

下面分别测试把vcruntime140d.dll放在SysWOW64和System32文件夹下
(1)SysWOW64和System32文件夹下都没有vcruntime140d.dll文件:
在这里插入图片描述

程序显示找不到vcruntime140d.dll。
(2)vcruntime140d.dll文件放在System32文件夹下:
在这里插入图片描述

程序显示找不到vcruntime140d.dll。
(3)vcruntime140d.dll文件放在SysWOW64文件夹下:
在这里插入图片描述

程序成功运行。
这样,我们就证明了必须把vcruntime140d.dll文件放在SysWOW64文件夹下,test.exe才能运行。

四、exe文件调用dll文件的过程

我们把test.exe放到一个纯净的64位的windows 7操作系统的虚拟机里,运行test.exe:
在这里插入图片描述

它首先报的是缺少ucrtbased.dll,我们下载一个64位的ucrtbased.dll放在当前目录:
在这里插入图片描述

它又会报缺少api-ms-win-core-timezone-l1-1-0.dll,我们又下载一个64位的api-ms-win-core-timezone-l1-1-0.dll放在当前目录:
在这里插入图片描述

之后的过程我就不一个一个dll文件添加截图了,通过这些我们就可以知道其实就是test.exe程序调用这些dll文件和这些dll文件直接的相互调用,我们只要把它们正确的都添加上,程序就可以正常运行:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序无法正常启动(0x000007b)或者找不到dll文件(以vcruntime140d.dll为例)的原因原理分析和解决方法(亲测已解决) 的相关文章

  • 尝试使用适用于 Windows XP 的 Heroku 时未找到 msvcrt-ruby18.dll

    我有一个学生在 Windows XP 上进行开发 他在尝试运行时遇到了一个奇怪的错误heroku keys add 错误是 This application has failed to start because msvcrt ruby18
  • 如何通过批处理文件检查服务是否正在运行并启动它,如果它没有运行?

    我想编写一个执行以下操作的批处理文件 Check if a service is running 如果正在运行 请退出批处理 如果没有运行 启动该服务 到目前为止 我在谷歌上搜索的代码示例被证明不起作用 所以我决定不发布它们 启动服务是通过
  • GOPATH值设置

    我用go1 3 1 windows amd64 msi安装go 安装后GOROOT是默认设置 我发现 D Programs Go bin 在 PATH 中 然后我创建一个 GOPATH 环境变量 使用 go get 命令时 出现错误 软件包
  • 在远程桌面上使用 Powershell 获取 Windows DisplayLanguage

    我正在尝试通过 powershell 获取 Windows 显示语言设置远程计算机 我尝试了 Get WinUserLanguageList 但这会返回所有语言的列表 Get WinSystemLocale 和 Get Culture 也不
  • 从 C# 调用非托管 dll。拿2

    我编写了一个 C 程序 它调用一个 C DLL 将命令行参数回显到文件中 当使用 rundll32 命令调用 c 时 它显示命令行参数没有问题 但是当从 c 内部调用它时 它不会显示 我问了这个问题 https stackoverflow
  • 如何在 PowerShell 中比较本地文件与 FTP 服务器上的文件的年龄并下载远程复制是否较新

    我正在编写一个 PowerShell 脚本 以帮助我为工作设置新电脑 希望这不仅仅是我一个人会使用 所以我正在尝试考虑所有事情 我在 FTP 服务器上保存了离线安装程序 java flash reader 等 如果本地副本尚未保存在创建的
  • Windows“findstr”命令:排除包含特定字符串的结果

    到命令findstr str1 我想添加一些内容来排除包含该字符串的结果str2 在Linux中 这样做的方法是添加 grep v str2 to grep str1 当然 是否有一个等效的标志 v在 Windows 中 是否有一个等效的标
  • Unix 命令“host” - Windows 中有等效命令吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在一台 Windows 7 机器上 按照本文指示我使用 Unix 命令 host https devcenter heroku com
  • 我如何移动粘性/捕捉 wpf 窗口

    当我移动 主 窗口时 我想移动两个或更多粘性窗口 我想做这样的事情 private void MainWindow PreviewMouseMove object sender MouseEventArgs e if e LeftButto
  • 如何检测Windows版本是否合法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我对获取版本信息不感兴趣 我想做的就是确保我的应用程序只能在合法版本的 Windows 上运行 而不是在盗版版本上运行 Windows 使
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • Visual Studio 2012 本机 C++ DLL x86 编译

    我最近将我的工具集从 Win 7 x86 Visual Studio 2010 升级到 Win 8 x64 Visual Studio 2012 但是 现在我的本机 C dll 编译为 x64 而不是 x86 除了将代码移至新操作系统并将其
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • 是否可以通过 C#.NET 编写 Win32 .dll 文件?

    是否可以通过 C NET 编写 Win32 dll 文件 如果是的话 我在哪里可以找到一些教程 如果不是 那么您对编写 Win32 DLL 有什么建议 Thanks 对的 这是可能的 事实上有一个工具可以做到这一点 它在 Rainmeter
  • 提取证书中主题属性的所有值

    我目前正在使用CertGetNameString http msdn microsoft com en us library windows desktop aa376086 28v vs 85 29 aspx提取每个主题属性的值 如下所示
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 基于JavaWeb三层架构的OA管理系统

    本系统是一个类似于培训学校的一个管理系统 系统角色有员工 学生 首页 它的左侧是后台管理系统的功能界面 右侧是前面的通过数据库查询的一个月或者是一年的统计信息 下面柱状图个折线图采用的是echarts架包通过数据库的信息实现的 都可以动态的
  • 全国计算机等级考试题库二级C操作题100套(第84套)

    第84套 函数fun的功能是 从三个形参a b c中找出中间的那个数 作为函数值返 回 例如 当a 3 b 5 c 4时 中数为4 请在程序的下划线处填入正确的内容并把下划线删除 使程序得出正确的结果 注意 源程序存放在考生文件夹下的BLA
  • 软件工程使用软件和软件所能画的图

    迅捷 业务流程图 软件结构图 功能框图 数据字典 序列图 用例图 Visio 业务流程图 软件结构图 功能框图 数据流图 数据字典 序列图 uml 用例图 类图 序列图 活动图 数据流图 Rose 用例图 包图 活动图 序列图 协作图 带有
  • 【测试开发】自动化测试 selenium 篇

    目录 一 什么是自动化测试 二 selenium 1 selenium的工作原理 2 selenium Java的环境搭建 Chrome浏览器 三 selenium中常用的API 1 定位元素 findElement 1 1 css选择语法
  • redis之mq实现发布订阅模式

    示例代码 github 概述 Redis不仅可作为缓存服务器 还可用作消息队列 本示例演示如何使用redis实现发布 订阅消息队列 在Redis中 发布者没有将消息发送给特定订阅者的程序 相反 发布的消息被描述为通道 而不知道 如果有的话
  • 分享Figma一些非常快速、省时、省力的功能和小技巧

    众所周知 越来越多的大工厂正在使用它figma了 那你的figma它是如何使用的 您是否遇到过一些问题或操作不方便的事情 今天 我想和大家分享Figma一些非常快速 省时 省力的功能和小技巧 因为文章属于直译 所以良心哥在编辑时帮你整理知识
  • [系统安全] 五十一.恶意家族分类 (2)基于API序列和深度学习的恶意家族分类实例详解

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 反馈及运放基础了解

    在电子电路中 将输出量 输出电压或输出电流 的一部分或全部通过一定的电路形式作用于输入回路 用来影响其输入量 放电电路的输入电压或输入电流 的措施称为反馈 基本放大电路的输入信号称为净输入量 它不但决定于输入信号 输入量 还与反馈信号 反馈
  • 将linux上的项目传到github上

    在网友的帮助下 终于学会了这一招 1 首先要确定你的linux上有安装了git 2 到你的网页github上新建一个仓库 将其clone到linux上 3 将你的项目放进这个空的仓库 文件夹 3 1 执行命令 git add 4 执行命令
  • 日语动作变形

    动1动词 动2动词 动3动词 基本型 可以作为连体形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 连用形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 体 也就是连用形 词尾由 段变为 段加 行
  • 这一年,谢谢自己

    兜兜转转间 这个开局有些艰难的2020就已经过半了 这些日子 你过得还好吗 不管是努力抵抗病痛 还是奋力工作生活 其实一直以来 我们都在路上 摸爬滚打 艰难前行 我们总是在追寻 在求索 为了所爱的人 而默默付出努力 却仍时时觉得对不起他们
  • 基于R语言tidyverse包的数据分析实践

    目录 1 tidyverse包基础 1 0 下载使用tidyverse 1 1 数据清洗 1 1 1 提取数据 1 1 2 数据整理与采样 1 1 3 缺省值处理 1 1 4 重复值处理 1 1 5 异常值处理 1 2 数据预处理 1 2
  • 【bug】ClassCastException 同一个类为什么还会类转换异常?

    错误日志 2021 11 11 20 51 18 304 maomao 3896 nio 8081 exec 2 ERROR c maomao common GlobalExceptionHandler 79 java lang Class
  • Kafka的认证

    Kafka支持基于SSL和基于SASL的安全认证机制 基于SSL的认证主要是指Broker和客户端的双路认证 即客户端认证broker的证书 broker也认证客户端的证书 Kafka还支持通过SASL做客户端认证 SASL是提供认证和数据
  • 数据结构与算法--图的深度优先搜索 (DFS)

    深度优先搜索即是 从起点出发 从规定的方向中选择一个不断往前走 走到头为止 然后尝试另一种方向直到最后的终点 DFS解决的是连通性问题 即从A是否能到达B 采用DFS进行遍历的话 必须依赖栈 后进先出 假设有一个图 里面有A B C D E
  • chromeOS中配置Java环境,部署Tomcat,Eclipse开发环境

    本文基于ChromeOS 版本107 0 5304 110 正式版本 基于java 1 8 0 202 基于apache tomcat 9 0 63 基于eclipse jee 2022 09 R 设置 开发者 Linux开发环境 启用 c
  • Spring Boot + vue-element 开发个人博客项目开发(十、通知公告功能实现)

    前面设计的通知公告中有两个字段不规范 现在我们重新调整一下 调整如下 原先的 noticeContent text NULL COMMENT 公告内容 createBy VARCHAR 128 NOT NULL COMMENT 创建者 修改
  • Qt界面编程(五)—— QDialog对话框(标准对话框、消息对话框、标准文件对话框)

    目录 1 基本概念 1 1 模态对话框 1 2 非模态对话框 2 标准对话框 3 消息对话框 3 1 About 3 2 AboutQt 3 3 Critical 3 4 Infomation 3 5 Question 3 6 warnin
  • ThreadPoolExecutor问题定位

    今天定位了一个内存泄露的问题 错误如下 Exception in thread http exec 24 java lang OutOfMemoryError unable to create newnative thread 众所周知 内
  • 应用程序无法正常启动(0x000007b)或者找不到dll文件(以vcruntime140d.dll为例)的原因原理分析和解决方法(亲测已解决)

    文章目录 一 问题1 由于找不到vcruntime140d dll 无法继续执行代码 重新安装程序可能会解决此问题 二 问题2 应用程序无法正常启动 0x000007b 请单击 确定 关闭应用程序 三 Windows目录下的SysWOW64