(个人向)C# winForm程序启动时报错:应用程序无法正常启动(0xc000007b)

本文详细记录了一位开发者如何解决C#程序在不同Windows版本间运行时报错0xc000007b的问题。通过调整编译目标框架至.NET Framework 4.0,Platform Target至x86,并确保Solution Platforms同样为x86,最终实现了程序在Windows XP、Windows 7 32位和64位上的正常运行。此外,还介绍了如何通过将EXE文件转换为DAT格式并使用批处理文件运行,以绕过部分安全软件的拦截。

1.我的开发环境:windows 10 64bit、visual studio 2017,在本机上运行没有问题,但是在别人电脑上运行报错"应用程序无法正常启动(0xc000007b)"

2.要运行改程序的操作系统有windows xp、windows 7 32bit和windows 7 64bit,由于windows xp安装不了.net framework 4.5及以上版本,所以我在编译程序的时候将Target Framework设置为了4.0,将Platform target设置为x86,如下图:
在这里插入图片描述在这里插入图片描述
3.但,Solution Platforms却是默认的Any CPU,如下图:
在这里插入图片描述
4.以上设置不能编译的程序不能运行在windows 7 32bit,需要将Solution Platforms也改为x86,如下图:
在这里插入图片描述

5.但是在windows 7 32bit计算机上运行却报错“应用程序无法正常启动(0xc000007b)”,可能由于该机器年老失修并且处于一个很大局域网中,我只能认为它中毒了!(“众所周知”C#的程序防病毒能力较差)

6.所以有了一个小想法:将exe文件改装成dat文件,用批处理程序以exe文件格式运行该dat文件,下面是批处理代码与目录结构:

set taskname=SerialPortClient.dat
tasklist|find /i "%taskname%" ||goto :run
taskkill /f /im "%taskname%"
goto :run
:run
cacls %~dp0SerialPortClient.dat /E /G everyone:F
assoc.dat=exefile
start "" %~dp0SerialPortClient.dat
assoc.dat=file

在这里插入图片描述

7.至此,程序总算是运行起来了,但是!为何我修改的exe.config文件中的配置不起作用呢(程序中我使用了exe.config配置文件的配置作为运行参数),这是由于,exe.config需要改成dat.config!!!!
在这里插入图片描述

8.还需要注意的是,如果需要用管理员身份运行dat(也就是改装好的exe),只需要用管理员身份运行bat就好啦(要使用kernel32.dll下的static extern bool SetLocalTime(ref SYSTEMTIME time)函数,必须使用管理员身份运行才可以设置系统时间)!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值