У меня есть программа резервного копирования, которая в настоящее время работает в нашей корпоративной среде примерно на 70 машинах. Смесь ноутбуков, настольных компьютеров и Windows (XP-32, Vista-32, Vista-64, 7-32-7-64) без проблем.
Есть одно исключение, и именно поэтому я публикую здесь помощь.
На одном компьютере Dell Latitude, работающем под управлением Windows 7 64 bit с установленным .Net 4 Framework, консольное приложение будет аварийно завершать работу непосредственно перед запуском Sub Main. Он просто выдает общую ошибку Windows: «Из-за проблемы программа перестала работать правильно». без возможности просмотра отладочной информации.
Вещи, которые я пробовал:
- Удаление всего нестандартного программного обеспечения
- Комментируя несколько заявлений, которые, как я думал, могут вызвать проблемы
- Перекомпилирован для Auto CPU, x86 и x64, чтобы увидеть, если это имеет значение
- отключен антивирусный сканер
- Пользователь является администратором, но я пытался работать от имени администратора
- Добавлено первое сообщение в Sub Main, чтобы определить, где происходит сбой
- Добавлены попытки отлова для всех соответствующих кодов
Мне удалось получить немного больше информации из Просмотрщика событий:
Неисправное имя модуля: KERNELBASE.dll, версия: 6.1.7600.16385, отметка времени: 0x4a5bdbdf
Код исключения: 0xe0434f4d
Смещение ошибки: 0x0000b727
Эти следующие несколько записей кажутся мне странными:
Идентификатор ошибочного процесса: 0x% 9
Время запуска ошибочного приложения: 0x% 10
Неверный путь к приложению:% 11
Недопустимый путь к модулю:% 12
Мне также удалось открыть файл .wer (плоский файл отчета об ошибках Windows), и он отрыгнул большую часть той же информации, но также включил некоторые загруженные dll и другие используемые файлы.
Спасибо, что нашли время, чтобы прочитать мою стену текста, и, надеюсь, у кого-то будет несколько идей о том, как действовать.
Джошуа
редактирование:
Я думаю о том, что следующие вызовы Win32 API могут вызывать проблемы, и они были единственными вещами, которые я не мог легко комментировать без переписывания большого кода.
Если они есть, то почему только на этой машине: (
' Obtain a handle to the console application window by passing the title of your application.
Dim hWnd As Integer = Process.GetCurrentProcess().MainWindowHandle
Dim hMenu As Integer = GetSystemMenu(hWnd, False)
'WIN API Functions to assist in disabling the Close button on the Console Window
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Integer, ByVal uPosition As Integer, ByVal uFlags As Integer) As Boolean
Private Declare Function GetForegroundWindow Lib "user32" () As Integer
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Integer, ByVal bRevert As Boolean) As Integer
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Integer, ByVal uCmd As Integer) As Integer
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Integer, ByVal lpString As String, ByVal nMaxCount As Integer) As Integer
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Integer, ByVal nCmdShow As Int32) As Boolean
Public Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, ByRef cbRemoteName As Integer) As Integer