部署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盘,那么就会报这类错误。只需将其日志记录的路径更改现有磁盘上存在的路径即可。 
posted on 2014-06-13 16:12  腾哥来了  阅读(132733)  评论(4编辑  收藏  举报