部署win服务时,经常会出现类似下面的错误,错误模块名称: KERNELBASE.dll。
日志名称: Application
来源: Application Error
日期: 2014/5/21 14:14:33
事件 ID: 1000
任务类别: (100)
级别: 错误
关键字: 经典
用户: 暂缺
计算机: ams-webserver
描述:
错误应用程序名称: demo.exe,版本: 1.0.5217.18476,时间戳: 0x534b44d9
错误模块名称: KERNELBASE.dll,版本: 6.1.7601.18015,时间戳: 0x50b83c8a
异常代码: 0xe0434352
错误偏移量: 0x0000c41f
错误进程 ID: 0xc04
错误应用程序启动时间: 0x01cf74bbeef9f15b
错误应用程序路径: E:\demo\demo .exe
错误模块路径: C:\Windows\syswow64\KERNELBASE.dll
报告 ID: 2cf76b05-e0af-11e3-817d-0050568c62ab
事件 Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2014-05-21T06:14:33.000000000Z" />
<EventRecordID>1352</EventRecordID>
<Channel>Application</Channel>
<Computer>ams-webserver</Computer>
<Security />
</System>
<EventData>
<Data>demo.exe</Data>
<Data>1.0.5217.18476</Data>
<Data>534b44d9</Data>
<Data>KERNELBASE.dll</Data>
<Data>6.1.7601.18015</Data>
<Data>50b83c8a</Data>
<Data>e0434352</Data>
<Data>0000c41f</Data>
<Data>c04</Data>
<Data>01cf74bbeef9f15b</Data>
<Data>E:\demo \demo .exe</Data>
<Data>C:\Windows\syswow64\KERNELBASE.dll</Data>
<Data>2cf76b05-e0af-11e3-817d-0050568c62ab</Data>
</EventData>
</Event>
解决方案:
引起这种错误的原因有很多种,但是windows是个很傻的东西,它报的错误不会给你很明确的定位,看这种错误给人的感觉就是权限不够,导致无法访问 C:\Windows\syswow64\KERNELBASE.dll,或者就是缺失KERNELBASE.dll文件。可是排查后又发现系统是有这个文件的,于是网上经常查到的答案就是替换这个文件,或者说给win服务调用的应用程序配置权限。
其实这些方法都不靠谱,原因很简单,KERNELBASE.dll文件在系统安装时就会生成,除非这个文件中毒或者说安装时文件已经损坏了,否则不要轻易去替换这类系统的文件;其次是权限配置,如果真的是权限问题,报的错误不应该是定位到系统文件,而是程序安装时就报程序的那类错误。
所以遇到这类错误,最好的方法就是去查看程序本身,特别是需要用到config之类的配置文件,很多时候都是配置文件出的错误。比如config文件中记录日志是在G盘,而你要安装的这个win服务机器本身并没有G盘,那么就会报这类错误。只需将其日志记录的路径更改现有磁盘上存在的路径即可。
https://answers.microsoft.com/en-us/windows/forum/all/applications-fail-to-start-with-kernelbasedll/44a4c2ad-a43f-479b-b026-bcdc2ff01285