C#编写的程序无法开机启动,错误模块“KERNELBASE.dll”

我使用C#编写了一款软件,但是在增加新功能后发现了一个bug:无法开机启动了。但是双击exe程序手动启动是没有问题的。

在事件查看器的Windows日志中找到2个应用程序错误:

1 Application Error

错误应用程序名称: zhushou.exe,版本: 1.0.7845.38907,时间戳: 0x60d48a77

错误模块名称: KERNELBASE.dll,版本: 10.0.19041.1023,时间戳: 0xcbf6f7d1

异常代码: 0xe0434352

错误偏移量: 0x0012a6f2

错误进程 ID: 0x28e4

错误应用程序启动时间: 0x01d7695f2df5fe6b

错误应用程序路径: D:\Program Files\zhushou\zhushou.exe

错误模块路径: C:\WINDOWS\System32\KERNELBASE.dll

报告 ID: 6b0ae578-c5f3-44a4-9738-275b8b03ae3c

错误程序包全名: 

错误程序包相对应用程序 ID:

2 .NET Runtime

错误应用程序名称: zhushou.exe,版本: 1.0.7845.38907,时间戳: 0x60d48a77

错误模块名称: KERNELBASE.dll,版本: 10.0.19041.1023,时间戳: 0xcbf6f7d1

异常代码: 0xe0434352

错误偏移量: 0x0012a6f2

错误进程 ID: 0x28e4

错误应用程序启动时间: 0x01d7695f2df5fe6b

错误应用程序路径: D:\Program Files\zhushou\zhushou.exe

错误模块路径: C:\WINDOWS\System32\KERNELBASE.dll

报告 ID: 6b0ae578-c5f3-44a4-9738-275b8b03ae3c

错误程序包全名: 

错误程序包相对应用程序 ID: 

此bug困扰了我两天,我后来想了个思路:通过svn查看我最近干了啥,发现我增加了一个配置文件功能。恍然大悟,原来是手动执行exe的时候会自动设置exe的当前目录,而系统自动启动的时候,没有这个默认设置,导致不能定位配置文件。

解决方法很简单,在主程序启动时增加如下语句:

Directory.SetCurrentDirectory(Application.StartupPath);

扫码关注我的公众号