У меня есть приложение .NET и настройка для него.Построен с использованием VS 2005.
Машина для разработки - Windows XP SP3.
Однажды кто-то установил его под Windows7.И получите следующие ошибки
WinForm ThreadException
System.AccessViolationException: Попытка чтения или записи защищенной памяти.Это часто указывает на то, что другая память повреждена. в System.Windows.Forms.UnsafeNativeMethods.IOleObject.DoVerb (Int32 iVerb, IntPtr lpmsg, IOleClientSite pActiveSite, Int32 lindex, IntPtr COMRECT hwnd) в System.Windows.Forms.AxHost.DoVerb (глагол Int32) в System.Windows.Forms.AxHost.InPlaceActivate ()
другой
Исключение типа 'System.Windows.Forms.AxHost + InvalidActiveXStateException' было сгенерировано.Метод «Отключить» не может быть вызван в это время.
Теперь, интересно, где была проблема, и установил VS 2005 на эту Windows7.Теперь решение компилируется и запускается без исключений.Я собрал установку и переустановил только что созданную установку на этом компьютере с Win7 ...
Я получил исключения.Почему это так?
Приложения не имеют исключений, запускаемых с VS, но выдают его при запуске установленного исполняемого файла ...
Однако я успешно (без исключений) проверил установленное приложение на некоторыхмашины с ОС> Win XP: Windows 7 (x64) и Windows Server 2008 (x64) ...
Изучая журналы, я обнаружил код, выдающий исключение:
Panel p = new Panel();
p.Margin = new Padding(0);
p.Dock = DockStyle.Fill;
p.Controls.Add(display); // 'display' is an ActiveX control instance
Logger.LogMessage("before");
this.tableLayoutPanel.Controls.Add(p); // protected memory EXCEPTION
Logger.LogMessage("after");
Итак, я вижу « до », затем AccessViolationException: Attempted to read or write protected memory...
не вижу « после » ...
Каковы общие причины таких исключений?
Подробности
- Я использую в приложении некоторые сторонние ActiveX;
- Сэмплы (написанные на C ++), использующие этот ActiveX, хорошо работают на этом компьютере.
- Решение предназначено для платформы x86;
- Мне удалось без ошибок запустить приложение на ** Windows Server 2008 (x64) и на Windows 7 (x64);
- Пробовал в режиме 'Windows XP Compatibility (SP2, SP3)' - тот же результат (исключения).
- Попытался установить приложение в другую папку,
ProgramFiles
.Я использовал C: \ TestFolder в качестве пути установки - результат тот же: AccesViolationException ....