2013-10-10 165 views
7

我有一个基于Framework 2.0构建的.NET应用程序。[程序名称] .exe已停止工作

  • 我已经为它建立了一个安装程序,并试图在3.5的机器上运行它。
  • 所有相关环境都在Windows 7上
  • 应用程序在我的开发机器上以VS调试模式完美运行,该机器也具有Framework 3.5。
  • 安装程序运行自己的计算机和用户的机器上都精细
  • 安装完成后,运行该程序立即导致“[程序名称] .exe文件已停止工作”,没有进一步的信息
  • 我有用户尝试安装Framework 2.0,但被“你必须使用启用/禁用功能对话框”屏蔽。我已经研究了其他一些东西,如DEP,将程序集设置为Windows 7兼容模式等等。
  • 我不相信它是应用程序中的任何特定错误,因为它有一个启动屏幕,在做任何事之前只显示一个jpeg图像其他的东西,甚至没有出现;看起来它必须是一个总体兼容性问题。

我不知道下一步该怎么做。我希望有人能够至少为我提供一种方式,让我在运行.exe时获得额外的错误信息,这样我就可以找出问题所在。

在此先感谢。

迈克

编辑1

这是我在事件日志中发现的错误:

Log Name:  Application 
Source:  Application Error 
Date:   10/10/2013 1:42:49 PM 
Event ID:  1000 
Task Category: (100) 
Level:   Error 
Keywords:  Classic 
User:   N/A 
Computer:  [my development machine] 
Description: 
Faulting application name: BARTJr.exe, version: 1.0.0.1, time stamp: 0x5256e6de 
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18229, time stamp: 0x51fb1677 
Exception code: 0xe0434f4d 
Fault offset: 0x000000000000940d 
Faulting process id: 0x%9 
Faulting application start time: 0x%10 
Faulting application path: %11 
Faulting module path: %12 
Report Id: %13 
Event 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="2013-10-10T17:42:49.000000000Z" /> 
    <EventRecordID>19455</EventRecordID> 
    <Channel>Application</Channel> 
    <Computer>mcaputow7.ezesoft.net</Computer> 
    <Security /> 
    </System> 
    <EventData> 
    <Data>BARTJr.exe</Data> 
    <Data>1.0.0.1</Data> 
    <Data>5256e6de</Data> 
    <Data>KERNELBASE.dll</Data> 
    <Data>6.1.7601.18229</Data> 
    <Data>51fb1677</Data> 
    <Data>e0434f4d</Data> 
    <Data>000000000000940d</Data> 
    </EventData> 
</Event> 

EDIT 2

错误引用带有附加信息的一个临时文件。以下是文件的内容:

<?xml version="1.0" encoding="UTF-16"?> 
<WERReportMetadata> 
    <OSVersionInformation> 
     <WindowsNTVersion>6.1</WindowsNTVersion> 
     <Build>7601 Service Pack 1</Build> 
     <Product>(0x1): Windows 7 Ultimate</Product> 
     <Edition>Ultimate</Edition> 
     <BuildString>7601.18113.amd64fre.win7sp1_gdr.130318-1533</BuildString> 
     <Revision>1130</Revision> 
     <Flavor>Multiprocessor Free</Flavor> 
     <Architecture>X64</Architecture> 
     <LCID>1033</LCID> 
    </OSVersionInformation> 
    <ProblemSignatures> 
     <EventType>CLR20r3</EventType> 
     <Parameter0>ssms.exe</Parameter0> 
     <Parameter1>2011.110.2100.60</Parameter1> 
     <Parameter2>4f35e2d9</Parameter2> 
     <Parameter3>System.Management</Parameter3> 
     <Parameter4>4.0.0.0</Parameter4> 
     <Parameter5>4ba1e140</Parameter5> 
     <Parameter6>d0</Parameter6> 
     <Parameter7>1c</Parameter7> 
     <Parameter8>RXOEJIH3RSKJEZ4XXWPXUDKCPPWJODNG</Parameter8> 
    </ProblemSignatures> 
    <DynamicSignatures> 
     <Parameter1>6.1.7601.2.1.0.256.1</Parameter1> 
     <Parameter2>1033</Parameter2> 
     <Parameter22>0a9e</Parameter22> 
     <Parameter23>0a9e372d3b4ad19135b953a78882e789</Parameter23> 
     <Parameter24>0a9e</Parameter24> 
     <Parameter25>0a9e372d3b4ad19135b953a78882e789</Parameter25> 
    </DynamicSignatures> 
    <SystemInformation> 
     <MID>BAB83330-1394-44F8-8298-044776CE31CB</MID> 
     <SystemManufacturer>Microsoft Corporation</SystemManufacturer> 
     <SystemProductName>Virtual Machine</SystemProductName> 
     <BIOSVersion>090004</BIOSVersion> 
    </SystemInformation> 
</WERReportMetadata> 
+0

事件日志中是否有任何内容? – Andrew

+0

@安德鲁,是的。它显示以下内容: 错误模块名称:KERNELBASE.dll,版本:6.1.7601.18229,时间戳:0x51fb1677 异常代码:0xe0434f4d 我GOOGLE了异常代码,并发现有人谈论与版本控制问题。我已经将版本从1改为2,所以我只是试着改回它,但同样的问题。 – eequalsmcaputo

+2

顺便说一句,为什么这会得到downvoted?在发布之前,我花了几个小时进行故障排除和研究。 – eequalsmcaputo

回答

0

我之前很多次已经经历,每一次,那是因为在目标计算机没有一个组件(DLL)由我的应用程序引用。当应用程序引用立即需要的程序集时,例如在启动窗体(用于Win窗体项目)之前可以显示,然后它会以这种方式崩溃。

无论如何,我不希望这是你的答案,但这是值得看的。

+0

它可能是框架版本?除框架文件外,所有引用的.dll文件都位于部署后的bin文件夹中。 – eequalsmcaputo

+0

可能。你确实知道目标机器上存在.NET 2.0吗? –

+0

是的,我刚刚检查过,两台机器上都有正确的版本,所以不要介意这个想法。 – eequalsmcaputo

3

已解决。我最终试图尝试“以管理员身份运行”,这让我看到了发生的实际错误。没有必要使用管理员权限来获得一个.NET未处理的异常对话框来显示,但是在那里。

0

把下面的代码在你的enterpoint(主)第一 可以崩溃

AppDomain.CurrentDomain.UnhandledException += (sender,e)=>{ 
    if(e.IsTerminating) 
    { 
     //TODO: write your log 
    } 
}; 
0

之前捕捉例外,我刚才想到了这个问题,而且我发现,这是导致一些DLL的损失解决问题。我强迫终止应用程序的更新,我想这可能是造成损失的原因。