AccessViolationException с веб-браузером в форме Windows - PullRequest
2 голосов
/ 04 февраля 2009

Я написал базовое приложение Windows Form на C # со встроенным элементом управления веб-браузером. Я перехожу на страницу, чтобы просмотреть канал камеры. Приложение отлично работает на Windows XP, но не на Vista.

В Vista я получаю исключение AccessViolationException. Похоже, это связано с предотвращением выполнения данных.

В статье на http://jtstroup.net/CommentView,guid,3fa30293-a3a4-4a1c-a612-058e751ad151.aspx есть пара решений. Исправление в нижней части страницы editbin.exe / NXCOMPAT: НЕТ YourProgram.exe из командной строки Visual Studio работает просто отлично.

Однако я хотел бы использовать метод события после сборки, добавив следующее, как предложено:

REM Пометить проект как несовместимый с DEP вызвать "$ (DevEnvDir) .... \ VC \ bin \ vcvars32.bat" вызвать "$ (DevEnvDir) .... \ VC \ bin \ editbin.exe" / NXCOMPAT: НЕТ "$ (TargetPath)"

Однако, это не работает, когда я пытаюсь запустить программу через отладчик (т.е. я получаю то же исключение).

Есть идеи?

Ответы [ 6 ]

1 голос
/ 04 февраля 2009

Согласно этой статье :

Потому что это наблюдалось в настройке проект с Visual Studio 2008, что Добавить исходный путь к выходу проекта Указывает на c: \ App \ OBJ * .exePost Build Событие будет обновлять c: \ app \ BIN * .exe а не OBJ.

Вручную добавить встроенную настройку и Проект развертывания Создать новую настройку Проект | Добавить файл | выберите Build EXE которая находится под папкой для мусора

1 голос
/ 04 февраля 2009

Отключить процесс размещения Visual Studio или, альтернативно, пометить процесс размещения (yourapp.vshost.exe) как несовместимый с DEP?

0 голосов
/ 06 января 2013

Мне нужно было добавить еще одну строку к моему событию пост-сборки

вызов "$ (DevEnvDir) .. \ tools \ vsvars32.bat" editbin.exe / NXCOMPAT: НЕТ «$ (TargetPath)» editbin.exe / NXCOMPAT: НЕТ «$ (ProjectDir) obj \ $ (ConfigurationName) \ $ (TargetFileName)»

это редактирует exe в папке obj. Похоже, это то, что использует мой проект развертывания.

Я получил идею отсюда. Форум Microsoft

0 голосов
/ 04 февраля 2009

Это элементы управления ActiveX, а не апплеты.

Опять же, программа работает, если я применяю editbin.exe из командной строки Visual Studio, или если я использую это событие после сборки, как описано выше, и выключаю процесс размещения Visual Studio.

Когда я запускаю создание проекта установки / развертывания, запускаю установщик и затем пытаюсь запустить программу, она все равно дает сбой. На клиентских машинах, скорее всего, не будет Visual Studio, и я не могу запустить editbin.exe на целевом компьютере после развертывания - его нужно запустить в проекте установки / развертывания. Так что я предполагаю, что либо событие после постройки из первичного вывода не было запущено, либо это так, и в проекте развертывания есть что-то, включающее DEP.

0 голосов
/ 04 февраля 2009

Содержит ли просматриваемая страница Java-апплет <applet>? Я столкнулся с этой проблемой и проследил ее до этого. Это связано с тем, что элемент управления WebBrowser использует JVM от Microsoft, который, по-моему, сейчас не поддерживается.

0 голосов
/ 04 февраля 2009

Вопрос. Виста версия, которую вы пытаетесь. Это 64 бит? Если это так, скомпилируйте код только для x86 и попробуйте.

...