[имя программы].exe перестал работать

У меня есть приложение.NET, которое было построено на платформе 2.0.

  • Я собрал установщик для него и пытаюсь запустить его на машине с 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>

РЕДАКТИРОВАТЬ 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>

4 ответа

Это решено. В конце концов я решил попробовать "Запуск от имени администратора", что позволило мне увидеть фактическую ошибку, которая произошла. Нет никакого смысла в том, что права администратора требуются для отображения диалогового окна необработанных исключений.NET, но это так.

Я сталкивался с этим много раз раньше, и каждый раз, потому что конечный компьютер не имеет сборки (DLL), на которую ссылается мое приложение. Когда приложение ссылается на сборку, которая необходима сразу, например, до отображения формы запуска (для проекта форм Win), то таким образом происходит сбой.

Во всяком случае, я не обещаю, что это ваш ответ, но это то, на что стоит посмотреть.

Сначала поместите код ниже в вашей точке входа (Main), который может перехватить исключение перед сбоем

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

Я только что столкнулся с этой проблемой и обнаружил, что именно потеря некоторых DLL привела к этой проблеме. Я вынужден был прекратить обновление приложения, и я думаю, что это может быть причиной потери.

Другие вопросы по тегам