Последнее обновление Мар 15, 2023
Ошибка выполнения 217 мешает вам запускать приложения? Вот как это можно исправить.
Пользователи говорили об ошибке Runtime 217 на форуме поддержки Microsoft Windows. Это сообщение об ошибке появляется на настольных компьютерах и ноутбуках некоторых пользователей всякий раз, когда они пытаются запустить определенные программы.
В результате пользователи не могут запускать и использовать пакеты программного обеспечения Windows, для которых они видят сообщения об ошибке 217. Попробуйте применить эти возможные решения, если вы еще один пользователь, которому нужно исправить ошибку 217.
1 Запустите утилиту проверки системных файлов
Повреждение системных файлов является вероятной причиной ошибки 217. Поэтому запуск встроенных в Windows инструментов восстановления системных файлов и образов может решить эту проблему для некоторых. Запустите сканирование образа системы и файлов в командной строке следующим образом:
-
Нажмите клавишу Windows + X и выберите ярлык поиска .
-
Введите CMD в поле поиска и выберите там параметр «Запуск от имени администратора» приложения командной строки .
-
Во-первых, введите эту команду восстановления образа системы и нажмите кнопку «Ввод »:
DISM.exe /Online /Cleanup-image /Restorehealth
-
Когда команда образа системы завершит процесс, введите этот текст и нажмите Return :
sfc /scannow
-
Теперь дождитесь завершения сканирования SFC, которое вы начали, и отобразите итоговое сообщение.
2 Восстановите распространяемый пакет Visual C++ 2015–2019.
Ошибка 217 может возникать из-за проблем с распространяемым компонентом Visual C++ 2015-2019. Этот распространяемый пакет может быть поврежден или отсутствовать. Вот как вы можете восстановить распространяемый пакет Visual C++ 2015-2019 с помощью апплета Панели управления программами и функциями:
-
Откройте диалоговое окно «Выполнить Windows».
-
Откройте апплет «Программы и компоненты», набрав appwiz.cpl в «Выполнить» и нажав «ОК».
-
Выберите распространяемый пакет Visual C++ 2015-2019. Если вы можете найти только распространяемый пакет Visual C++ 2015-2022, выберите этот пакет.
-
Нажмите кнопку «Изменить» для выбранного пакета.
-
Нажмите Восстановить, чтобы исправить Visual C++.
3 Выберите вариант восстановления для уязвимого программного обеспечения
Вы можете выбрать вариант восстановления, аналогичный тому, который есть в пакетах Visual C++ в разделе «Программы и компоненты» для некоторых сторонних программ. Если в программном пакете, который вам нужен для исправления ошибки 217, есть кнопка «Восстановить» в «Программы и компоненты», выберите этот вариант.
Для этого откройте программу удаления Windows, как описано во втором методе выше, выберите уязвимое программное обеспечение и нажмите для него кнопку «Восстановить» или «Изменить».
4 Переустановите программное обеспечение, для которого возникает ошибка выполнения 217
Программное обеспечение, для которого вам нужно исправить ошибку 217, может быть установлено неправильно или не полностью. В этом случае переустановка уязвимого программного обеспечения является жизнеспособным решением. Вы можете удалить, а затем переустановить затронутые программы через панель управления следующим образом:
-
Откройте «Программы и компоненты», как описано в первых двух шагах второго решения выше.
-
Выберите программное обеспечение, для которого необходимо исправить ошибку выполнения 217.
-
Затем нажмите «Удалить» для выбранного программного обеспечения.
-
Выберите «Да» в любых запросах на подтверждение удаления программного обеспечения.
-
Перезагрузите Windows после удаления программного обеспечения.
-
Откройте страницу загрузки издателя для вашего программного обеспечения для удаления. Затем загрузите последнюю версию программного обеспечения с этой страницы.
-
Переустановите программное обеспечение Windows с помощью мастера установки.
5 Выберите параметр сброса ПК
Сброс вашего ПК до конфигурации по умолчанию можно считать ядерным вариантом для исправления ошибки среды выполнения 217. Это ядерное исправление, поскольку оно уничтожит все установленное вами стороннее программное обеспечение. Однако вы можете по крайней мере сохранить свои пользовательские файлы в инструменте «Сбросить этот компьютер ».
Это должен быть ваш последний вариант исправления ошибки среды выполнения 217, поскольку для этого требуется восстановить заводские настройки компьютера с Windows.
Другие возможные исправления для ошибки выполнения 217
Вы также исправляете другие ошибки времени выполнения, если они возникают вместе с ошибкой выполнения 217. Ошибки могут быть связаны; таким образом, если вы исправите одно, вы исправите другое. Из любого потенциального исправления мы особенно рекомендуем вам попробовать чистую загрузку Windows для устранения конфликтов программ.
Программное обеспечение Kick-Start с исправлениями ошибки выполнения 217
Итак, вот как вы можете запускать приложение всякий раз, когда ошибка выполнения 217 поражает его. Вам не нужно какое-либо стороннее программное обеспечение для восстановления для устранения ошибки выполнения 217. Применение приведенных выше потенциальных решений с помощью встроенных системных инструментов Windows, вероятно, исправит эту ошибку времени выполнения на ПК большинства пользователей.
Источник записи: www.makeuseof.com
Содержание
- Здравствуйте, я ошибка 217 и я вам ничего не скажу
- Теория и анализ проблемы
- Отключаем финализацию модулей
- Пытаемся причесать хорошую мысль
- А не развить ли идею?
- Как исправить ошибку Runtime Error 217.
- How to fix Runtime Error 217 on Windows 11/10
- Fix Runtime Error 217 on Windows 11/10
- 1] Run SFC and DISM
- 2] Reinstall the application
- 3] Repair Microsoft Visual C++ installation
- 4] Troubleshoot in Clean Boot State
Вероятно многие встречались с таким вот «партизаном» при старте или завершении приложения:
Очень информативное сообщение, сразу понятна причина ошибки, место и способ ее решения.
Впрочем, если без шуток, что это вообще такое?
Конечно-же это исключение, но ни тип исключения, ни его описание нам не доступны — просто «Runtime error 217» и адрес, а дальше сами…
Если честно, раньше я как-то даже не задумывался по поводу данного исключения, т.к. в моих проектах оно явление редкое, пока однажды у целой череды пользователей не начала воспроизводится именно 217-я ошибка.
Впрочем, даже тогда я не пошел по правильному пути и просто добавил дополнительный уровень логирования в проект, по результатам которого достаточно оперативно нашел причину и исправил ее.
Но, по сути, я просто потратил свое время…
И тратил бы его в дальнейшем, если бы на днях со мной не связался Виктор Федоренков и не рассказал о своих мыслях по поводу ошибки за номером 217.
Теория и анализ проблемы
Без теории нам никуда, иначе можем уткнуться в пределы собственных знаний.
Поэтому начнем, конечно, с теоретической части.
Для начала я немного освежил мои представления об ошибках в принципе, перечитав часть статьи «Обработка ошибок — глава 1.2.2» за авторством Александра Алексеева, откуда вынес информацию о том, что ошибка 217 будет отображена в том случае, если не инициализирован модуль SysUtils, причем это у Александра проиллюстрированно достаточно наглядно:
Открыть картинку в полный размер…
На основании данной картинки можно сделать грубый вывод: пока SysUtils жив — все исключения должны отображаться в нормальном виде, о чем идет отдельное упоминание:
Например, если вы видите сообщение о runtime-ошибке, то, судя по приведённой схеме, маловероятно, чтобы ошибка возникла в обработчиках событий на форме. Зато гораздо вероятнее, что она возникает, скажем, в какой-то секции finalization (которая выполняется после секции finalization модуля SysUtils) или в назначенной процедуре ExitProcessProc. Но, разумеется, причина ошибки может сидеть где угодно — в том числе и в упоминаемых обработчиках событий.
Ну что-ж давайте проверим, пишем код, в котором SysUtils должна быть финализирована позже модуля Unit1, в котором искусственно генерируем исключение:
Билдим, запускаем, закрываем форму и… Runtime error 217.
Утверждение о том, что 217 отображается после финализации SysUtils полностью верное, но давайте-ка посмотрим на сам код финализации:
Смотрите что происходит: в процедуре FinalizeUnits вызываются все финализирующие процедуры, адреса которых расположены в массиве InitContext.InitTable^.UnitInfo в том порядке, в котором происходила их инициализация, т.е. самые первые расположены в начале массива (а финализация идет с конца).
Где-то в самом низу расположен и SysUtils + System, ну а мы, с нашим модулем Unit1 где-то в самом верху.
Но вдруг происходит исключение в нашем модуле и «бабах», порядок катарсиса нарушен.
После «бабах» FinalizeUnits вызывается повторно, пропуская наш модуль, вызвавший исключение, вследствие чего разрушается SysUtils и разные, встречающиеся по пути, class destructor-ы, до кучи грохается System с менеджером памяти (сидящий одним из первых в начале списка), после чего идет контрольный выстрел в лоб — RAISE, вот тут-то мы и приплыли — здравствуй 217.
А что если произойдет исключение в секции инициализации любого модуля?
Да все тоже самое:
Делаем вывод: любое необработанное исключение в секциях инициализации или финализации будет приводить к потере описания исключения и приводить к ошибке 217.
На этом с теорией, думаю, закончим.
Имея на руках понимание о причине возникновения Runtime error 217, попробуем получить на руки более привычный нам вариант сообщения об исключении.
Отключаем финализацию модулей
В самом начале обсуждения Виктором был предложен достаточно эффективный способ обхода данной ошибки.
Его анализ заключался в следующем: общая инициализация обработчика исключений производится в процедуре InitExceptions модуля SysUtils, а финализация вызовом DoneExceptions.
Если каким либо образом отключить вызов DoneExceptions плюс не дать разрушиться менеджеру памяти, заблокировав вызов блока финализации System — на руки мы получим сообщение об исключении в приемлимом виде.
Как вариант решения был предложен следующий код, который нужно подключить к файлу проекта самым первым модулем (будет работать начиная с D2005 и выше):
Если честно — аплодировал стоя.
Вот он: хак в самом грязном виде как он есть — такие вещи могут делать только те, кто действительно понимает, чем это грозит 🙂
И данный модуль вывел работу нашего IT отдела примерно на три часа — это была жесткая дискуссия 🙂
Но, впрочем, давайте разберем логику работы данного кода:
Суть его проста, необходимо выйти на данные о загруженных модулях (включая BPL) в том виде, в котором их понимает Delphi приложение. Это было сделано посредством доступа к началу однонаправленного списка структур TLibModule. Первым элементом списка будет структура, описывающая текущий образ, откуда нам нужно всего-то и получить данные о структуре UnitInfo, которая содержит в себе данные как о количестве инициализированных модулей, так и об адресах их процедур инициализации и финализации в виде записи PackageUnitEntry.
Блокирование финализации модулей происходит посредством присвоения параметру FInit значения nil у каждой записи PackageUnitEntry.
При обниливании данного параметра FinalizeUnits не сможет произвести вызов обработчика и в итоге тот самый raise, о котором я писал выше, сможет достаточно корректно произвести отображение возникшего исключения.
Но вот дальше все сложнее.
Пытаемся причесать хорошую мысль
Идея здравая и причины понятны, но вот как-же так, ресурсы все-же не освобождены, FastMem перестанет нормально работать (она собирает утечки как раз при финализации), да и совместимости маловато, к примеру, как я и сказал выше, под Delphi 7 данный код вообще работать не сможет.
После первого часа обсуждений в IT отделе мы даже умудрились прийти и к такому выводу: «да и хрен с ними с SysUtils и System — что-то критичного они за собой не несут».
А потом, опять начали спорить — ну не устраивал нас этот подход, вроде все хорошо, но не аккуратненько как-то.
Рассматривались даже варианты прямого сплайсинга блоков финализации и до кучи деструктора Exception — но дополнительный хак, на уже существующий хак не устраивал вообще никого.
И тут, сидя в отладчике и прогоняя код по 70-му разу пришла мысля.
Дык эта… а как вообще выводится сообщение о произошедшем исключении?
А выводится оно посредством передачи управления на ExceptHandler, в коде которого нет ничего секретного.
А что мы делаем убирая финализацию модулей?
Правильно, заставляем вызваться его-же.
Попробуем-ка проэмулировать вызов ExceptHandler.
Пишем тестовый юнит и подключаем его к проекту самым первым:
Запускаем на выполнение и…
Получилось.
Встроившись в цикл финализации, мы отобразили произошедшее исключение и продолжили финализацию дальше вызовом Halt(1).
В итоге задача решена, грамотно и документировано, и совместимо с Delphi 7, но…
А не развить ли идею?
Есть такое понятие, как «наведенные ошибки», т.е. ошибки произошедшие из-за того что перед ними тоже произошла ошибка.
Ну к примеру, функция А, которая должна возвращать экземпляр некоего класса и функция Б, использующая этот экземпляр в работе. К примеру в функции А произошло необработанное исключение (например нет доступа к файлу) и она не создала класс, а потом где-то гораздо позже по коду приложения процедура Б выполняет обращение к этому экземпляру и в итоге происходит Access Violation.
Тоже самое может произойти и в процедурах инициализации/финализации, причем исключение, произошедшее в финализации скроет от нас саму причину.
Для демонстрации напишем вот такой код, в котором при инициализации приложения будет создаваться некий логер, в который будут писаться этапы работы приложения, а в финализации будет запись о завершении работы.
Для генерации исключения заставим логер создаваться по несуществующему пути:
Мало у кого в системе присутствует диск «А» поэтому результатом этого кода будет либо «Runtime error 216» (именно 216, а не 217), либо, если подключим код из предыдущей главы:
Exception EAccessViolation in module Project2.exe at 001B1593.
Access violation at address 005B1593 in module ‘Project2.exe’. Read of address 00000000.
А ведь причина то кроется в самом первом исключении, которое нами не отображается и с наскока разобраться в причине ошибки не получится.
Для того чтобы исправить эту несправедливость, можно немного причесать код и довести его до вот такого состояния:
Здесь идея проста, функция GetNextException по сути повторяет вызов AcquireExceptionObject, но после своего вызова не теряет ссылку на следующее в очереди исключение, а запоминает адрес следующего фрейма во внешней переменной.
После чего все исключения заносятся в список (самое последнее будет первым в списке) и выводятся программисту с соблюдением очередности, в результате чего нам будет сразу понятно, что сначала произошло вот это:
И уже только после него пошли всякие там AV.
Теперь по поводу остальных кодов ошибок.
Почему я начал именно с «Runtime error 217»?
Ну потому что она наиболее легко воспроизводима, а так технически, используя выше приведенный модуль, мы получим на руки вполне нормальное описание всех возможных Runtime ошибок, коих в наличии у нас вон сколько:
Вот таким небрежным кодом, мы можем получить то, о чем нам не хочет говорить ошибка под кодом 217.
Впрочем, я не думаю что этот подход будет незнаком опытным программистам.
Скорее всего это — здравствуй велосипед, ибо вероятнее всего данная проблема кем-то уже решалась ранее, но я просто не знал о данном решении.
А если нет — значит буду вторым.
Отдельный респект соавтору и вдохновителю данной статьи — Виктору Федоренкову.
Источник
Как исправить ошибку Runtime Error 217.
Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке.
Что такое Runtime Error 217?
Runtime Error 217 может возникать по одной из множества причин. Эти причины включают в себя:
- Отказ зарегистрировать dll в процессе установки приложения.
- Наличие вирусов на компьютере.
- На вашем компьютере установлены неправильные региональные настройки.
- На вашем компьютере есть устаревший файл msvcrt.dll .
на вашем компьютере.
- Сломанные или отсутствующие файлы реестра.
- Наличие устаревшего MS DCOM файла на вашем компьютере.
- Отсутствует stdole32.tlb-файл на вашем компьютере.
Как исправить Runtime Error 217: неисправные установки
Если вы подозреваете, что ошибка runtime error 217 возникает из-за неправильной установки, просто переустановите приложение. Однако, если ваш источник для приложения поврежден, то Вам необходимо получить новый диск или скачать новую версию приложения перед его попыткой установки. Как только приложение будет установлено правильно, ошибка runtime больше не должна возникать.
Как исправить Runtime Error 217: вирусная инфекция
Когда вирус заражает компьютер, может возникнуть ряд проблем, в том числе ошибки времени выполнения. Если ошибка runtime error 217 появляется из-за вирусной инфекции, просто просканируйте компьютер с помощью современных антивирусных приложений, чтобы её удалить.
Как исправить Runtime Error 217: неправильные региональные настройки
Если настройки Вашего компьютера неверны, может появится ошибка Runtime Error 217. Убедитесь, что настройки даты на вашем компьютере совпадают для страны, где вы находитесь.
Как исправить Runtime Error 217: устаревшие файлы msvcrt.dll
Если ошибка происходит из-за устаревшего файла msvcrt.dll, Вам необходимо заменить файл при обновлении операционной системы. Вы можете сделать это, посетив веб-сайт корпорации Майкрософт. Пока вы там находитесь, проверьте все существующие исправления, которые были выпущены для вашей версии Windows.
Как исправить Runtime Error 217: устаревший файл MS DCOM
Если ошибка появляется из-за устаревшего файла MS DCOM, получите последние обновления для вашей операционной системы через веб-сайт Microsoft.
Как исправить Runtime Error 217: отсутствует файл stdole32.tlb
Если вам не хватает файла stdole32.tlb, Вам необходимо скачать его и заменить. В то время как вы могли бы быть в состоянии получить этот файл на нескольких различных веб-сайтах, лучше всего получить его через библиотеки Microsoft dll.
Как исправить Runtime Error 217: сломанные или отсутствующие файлы реестра
Файлы реестра, которые стали сломанными или повреждены, могут быть восстановлены при запуске авторитетных программ registry cleaner на вашем компьютере. Выберите ту программу, которую вы хотите скачать, установите её и запустите, чтобы выполнить ремонт вашей системы.
Источник
How to fix Runtime Error 217 on Windows 11/10
You may encounter Runtime Error 217 on Windows PC while opening an application. There can be multiple reasons for this issue such as incomplete download package, corrupted files, etc. The error will also mention the address where the Runtime error has occurred. Eg it could say Runtime Error 217 at 00580d29, 004bb10d, 5009763B, 0047276a, 0041fae1, etc.
Fix Runtime Error 217 on Windows 11/10
These are the things you can do to fix Runtime Error 217 on Windows 11/10:
- Run SFC and DISM
- Reinstall the application
- Repair Microsoft Visual C++ installation
- Troubleshoot in Clean Boot State.
Let us talk about them in detail.
1] Run SFC and DISM
One of the most common reasons for this error is corrupted system files and with these two commands, we are going to rectify them. To do that, launch Command Prompt as an administrator, type the following commands and hit Enter simultaneously.
Now, try running the application, hopefully, you won’t face the error.
2] Reinstall the application
Another reason for this problem is incomplete download, so, to solve this error we need to reinstall the application that is causing this error. To do that, hit Win + S, type “Add or remove programs”, and click Open. Now, search out the application that’s giving you the Runtime error, select, and click Uninstall.
Now, reinstall the application and hopefully, Runtime Error 217 will be fixed.
Related: Fix Runtime Error R6034 in Windows.
3] Repair Microsoft Visual C++ installation
Another thing you can do to fix this is to repair Microsoft Visual C++. To do that, follow these steps:
- Launch Control Panel from the Start Menu and click Programs and Features
- Select Microsoft Visual C++ 2015-2019 Redistributable (x64) and click Change > Repair.
After this follow the on-screen instructions to repair Microsoft Visual C++. Hopefully, this will fix the Runtime error.
4] Troubleshoot in Clean Boot State
In most cases, you will able to resolve the issue with the first two methods, but if you fail to do so, try troubleshooting in the Clean Boot State. This way we will see if the problem is because of a third-party application.
To do that, follow these steps:
- Hit Win + R, type “msconfig” and hit Enter.
- Select Normal startup, go to Services tab, tick “Hide all Microsoft services”, and click Disable all > Apply > Ok.
- Restart your computer, and check if the issue persists.
If you are not experiencing Runtime Error in Clean Boot state, try doing the same again but this time, untick some services. Repeat this step till you find the exact culprit of the issue.
Hopefully, these solutions have helped you in fixing Runtime Error 217.
Источник
Номер ошибки: | Ошибка 217 | |
Название ошибки: | Explorer Runtime Error 217 | |
Описание ошибки: | Ошибка 217: Возникла ошибка в приложении Internet Explorer. Приложение будет закрыто. Приносим извинения за неудобства. | |
Разработчик: | Microsoft Corporation | |
Программное обеспечение: | Internet Explorer | |
Относится к: | Windows XP, Vista, 7, 8, 10, 11 |
Анализ «Explorer Runtime Error 217»
Как правило, специалисты по ПК называют «Explorer Runtime Error 217» как тип «ошибки времени выполнения». Чтобы убедиться, что функциональность и операции работают в пригодном для использования состоянии, разработчики программного обеспечения, такие как Microsoft Corporation, выполняют отладку перед выпусками программного обеспечения. К сожалению, иногда ошибки, такие как ошибка 217, могут быть пропущены во время этого процесса.
Ошибка 217 может столкнуться с пользователями Internet Explorer, если они регулярно используют программу, также рассматривается как «Explorer Runtime Error 217». После того, как об ошибке будет сообщено, Microsoft Corporation отреагирует и быстро исследует ошибки 217 проблемы. Разработчик сможет исправить свой исходный код и выпустить обновление на рынке. Чтобы исправить любые документированные ошибки (например, ошибку 217) в системе, разработчик может использовать комплект обновления Internet Explorer.
Как триггеры Runtime Error 217 и что это такое?
Сбой во время запуска Internet Explorer или во время выполнения, как правило, когда вы столкнетесь с «Explorer Runtime Error 217». Вот три наиболее заметные причины ошибки ошибки 217 во время выполнения происходят:
Ошибка 217 Crash — Ошибка 217 остановит компьютер от выполнения обычной программной операции. Обычно это происходит, когда Internet Explorer не может распознать, что ему дается неправильный ввод, или не знает, что он должен производить.
Утечка памяти «Explorer Runtime Error 217» — последствия утечки памяти Internet Explorer связаны с неисправной операционной системой. Повреждение памяти и другие потенциальные ошибки в коде могут произойти, когда память обрабатывается неправильно.
Ошибка 217 Logic Error — Вы можете столкнуться с логической ошибкой, когда программа дает неправильные результаты, даже если пользователь указывает правильное значение. Это связано с ошибками в исходном коде Microsoft Corporation, обрабатывающих ввод неправильно.
В большинстве случаев проблемы с файлами Explorer Runtime Error 217 связаны с отсутствием или повреждением файла связанного Internet Explorer вредоносным ПО или вирусом. Как правило, решить проблему можно заменой файла Microsoft Corporation. В качестве дополнительного шага по устранению неполадок мы настоятельно рекомендуем очистить все пути к неверным файлам и ссылки на расширения файлов Microsoft Corporation, которые могут способствовать возникновению такого рода ошибок, связанных с Explorer Runtime Error 217.
Ошибки Explorer Runtime Error 217
Наиболее распространенные ошибки Explorer Runtime Error 217, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:
- «Ошибка программного обеспечения Explorer Runtime Error 217. «
- «Explorer Runtime Error 217 не является программой Win32. «
- «Возникла ошибка в приложении Explorer Runtime Error 217. Приложение будет закрыто. Приносим извинения за неудобства.»
- «Не удается найти Explorer Runtime Error 217»
- «Отсутствует файл Explorer Runtime Error 217.»
- «Ошибка запуска в приложении: Explorer Runtime Error 217. «
- «Не удается запустить Explorer Runtime Error 217. «
- «Ошибка Explorer Runtime Error 217. «
- «Неверный путь к программе: Explorer Runtime Error 217. «
Проблемы Explorer Runtime Error 217 с участием Internet Explorers возникают во время установки, при запуске или завершении работы программного обеспечения, связанного с Explorer Runtime Error 217, или во время процесса установки Windows. Запись ошибок Explorer Runtime Error 217 внутри Internet Explorer имеет решающее значение для обнаружения неисправностей электронной Windows и ретрансляции обратно в Microsoft Corporation для параметров ремонта.
Причины проблем Explorer Runtime Error 217
Проблемы Explorer Runtime Error 217 могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с Explorer Runtime Error 217, или к вирусам / вредоносному ПО.
Точнее, ошибки Explorer Runtime Error 217, созданные из:
- Недопустимая (поврежденная) запись реестра Explorer Runtime Error 217.
- Вирус или вредоносное ПО, повреждающее Explorer Runtime Error 217.
- Explorer Runtime Error 217 ошибочно удален или злонамеренно программным обеспечением, не связанным с приложением Internet Explorer.
- Другое программное обеспечение, конфликтующее с Internet Explorer, Explorer Runtime Error 217 или общими ссылками.
- Неполный или поврежденный Internet Explorer (Explorer Runtime Error 217) из загрузки или установки.
Продукт Solvusoft
Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.
Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
в Ошибки ПК 23,905 Просмотров
Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке.
p, blockquote 1,0,0,0,0 –>
p, blockquote 2,0,0,0,0 –>
p, blockquote 3,0,0,0,0 –>
Что такое Runtime Error 217?
p, blockquote 4,0,0,0,0 –>
Runtime Error 217 может возникать по одной из множества причин. Эти причины включают в себя:
p, blockquote 5,0,1,0,0 –>
- Отказ зарегистрировать dll в процессе установки приложения.
- Наличие вирусов на компьютере.
- На вашем компьютере установлены неправильные региональные настройки.
- На вашем компьютере есть устаревший файл msvcrt.dll .
на вашем компьютере.
p, blockquote 6,0,0,0,0 –>
- Сломанные или отсутствующие файлы реестра.
- Наличие устаревшего MS DCOM файла на вашем компьютере.
- Отсутствует stdole32.tlb-файл на вашем компьютере.
Как исправить Runtime Error 217: неисправные установки
p, blockquote 7,0,0,0,0 –>
Если вы подозреваете, что ошибка runtime error 217 возникает из-за неправильной установки, просто переустановите приложение. Однако, если ваш источник для приложения поврежден, то Вам необходимо получить новый диск или скачать новую версию приложения перед его попыткой установки. Как только приложение будет установлено правильно, ошибка runtime больше не должна возникать.
p, blockquote 8,0,0,0,0 –>
Как исправить Runtime Error 217: вирусная инфекция
p, blockquote 9,0,0,0,0 –>
Когда вирус заражает компьютер, может возникнуть ряд проблем, в том числе ошибки времени выполнения. Если ошибка runtime error 217 появляется из-за вирусной инфекции, просто просканируйте компьютер с помощью современных антивирусных приложений, чтобы её удалить.
p, blockquote 10,1,0,0,0 –>
Как исправить Runtime Error 217: неправильные региональные настройки
p, blockquote 11,0,0,0,0 –>
Если настройки Вашего компьютера неверны, может появится ошибка Runtime Error 217. Убедитесь, что настройки даты на вашем компьютере совпадают для страны, где вы находитесь.
p, blockquote 12,0,0,0,0 –>
Как исправить Runtime Error 217: устаревшие файлы msvcrt.dll
p, blockquote 13,0,0,0,0 –>
Если ошибка происходит из-за устаревшего файла msvcrt.dll, Вам необходимо заменить файл при обновлении операционной системы. Вы можете сделать это, посетив веб-сайт корпорации Майкрософт. Пока вы там находитесь, проверьте все существующие исправления, которые были выпущены для вашей версии Windows.
p, blockquote 14,0,0,0,0 –>
Как исправить Runtime Error 217: устаревший файл MS DCOM
p, blockquote 15,0,0,1,0 –>
Если ошибка появляется из-за устаревшего файла MS DCOM, получите последние обновления для вашей операционной системы через веб-сайт Microsoft.
p, blockquote 16,0,0,0,0 –>
Как исправить Runtime Error 217: отсутствует файл stdole32.tlb
p, blockquote 17,0,0,0,0 –>
Если вам не хватает файла stdole32.tlb, Вам необходимо скачать его и заменить. В то время как вы могли бы быть в состоянии получить этот файл на нескольких различных веб-сайтах, лучше всего получить его через библиотеки Microsoft dll.
p, blockquote 18,0,0,0,0 –>
Как исправить Runtime Error 217: сломанные или отсутствующие файлы реестра
p, blockquote 19,0,0,0,0 –> p, blockquote 20,0,0,0,1 –>
Файлы реестра, которые стали сломанными или повреждены, могут быть восстановлены при запуске авторитетных программ registry cleaner на вашем компьютере. Выберите ту программу, которую вы хотите скачать, установите её и запустите, чтобы выполнить ремонт вашей системы.
(1 оценок, среднее: 1,00 из 5)
В этой статье мы расскажем вам, как избавиться от ошибки runtime 217 error at 123456.
Что делать если у вас стала возникать ошибка runtime 217 error?
Вот варианты решения проблемы:
Autodata — если у вас выдаёт ошибку Runtime error 217 004BB10D необходимо произвести следующие действия:
открываем командную строку (расположена в C:Usersимя вашего компьютера AppDataRoamingMicrosoftWindowsStart MenuProgramsSystem Tools) правой кнопкой по ярлыку, запустить от имени администратора, пишем в появившемся окне cd c:adcda2 “regsvr32 ChilkatCrypt2.dll”
если выдаёт ошибку place the cd/dvd in drive and choose ok необходимо запустить ФАЙЛ.
Если при установке windows либо другого программного обеспечения выдаёт ошибку CRC скорее всего у вас повреждён носитель, так же могут быть неисправны, дисковод, винчестер или флешка. Попробуйте другой не оцарапанный диск или другую флешку, в случае если не помогло, другой оптический накопитель или дисковод.
Видео драйвер перестал отвечать и был восстановлен, возможен перегрев графического ядра, битая память видеокарты, поврежденный кристалл ядра.
D3d.dll или DXD3D dll error — рекомендуется переустановить последний directX
AutoCAD в последних версиях, при загрузке особо ёмких чертежей, было замечено потребление оперативной памяти до 16 гб. В случае если ваш компьютер имеет характеристики intel i3 4gb ddr3*2, проблема проявляется в зависании при сохранении изменений в чертежах (особо ёмких чертежах).
Если у вас сбрасывается время число и год, скорее всего проблема заключается в батарейке материнской платы, которая села от времени и не запитывает BIOS материнской платы от чего он сбрасывает все настройки на заводские, а именно на дату изготовления материнской платы. Так же не которые сайты в браузере могут просить установить сертификат, такие как Mail.ru например.
Решение просто необходимо заменить батарейку.
Запуск программы не возможен, так как на компьютере отсутствует MSVCP.DLL. Попробуйте переустановить программу.
Решение: Необходимо установить microsoft visual С++ самой свежей версии.
В случае если на вашем компьютере бывают частые сбои с синим экраном, (экран смерти, он же BSOD) и каждый раз код ошибки разный 0*00000003b, 0*00000008e, 0*000000050 и т.п. есть большая вероятность неисправной оперативной памяти. Проще всего поставить другую оперативную память и запустить тот процесс или дать ту же нагрузку, какую вы давали при этих сбоях. Сбоя нет, проблем нет, память была неисправна, диагностика успешна, проблема устранена. «Почему проще всего подкинуть другую, а не запустить диагностический тест?» спросите вы, всё очень просто не все тесты видят неисправности оперативной памяти и при этом занимают уйму времени. Проще говоря можно потратить много времени и не найти причину, и двигаться дальше в неверном направлении.
Бывали случаи, что не хотели устанавливаться определённые программы, выдавали ошибки на одном и том же месте, при свеже установленной ОС без вирусов, Windows переставала работать ровно через месяц после установки, в итоге результат битая оперативная память, которая ни в одном тесте не выдавала ни единой ошибки.
Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке.
Что такое Runtime Error 217?
Runtime Error 217 может возникать по одной из множества причин. Эти причины включают в себя:
- Отказ зарегистрировать dll в процессе установки приложения.
- Наличие вирусов на компьютере.
- На вашем компьютере установлены неправильные региональные настройки.
- На вашем компьютере есть устаревший файл msvcrt.dll .
на вашем компьютере.
- Сломанные или отсутствующие файлы реестра.
- Наличие устаревшего MS DCOM файла на вашем компьютере.
- Отсутствует stdole32.tlb-файл на вашем компьютере.
Как исправить Runtime Error 217: неисправные установки
Если вы подозреваете, что ошибка runtime error 217 возникает из-за неправильной установки, просто переустановите приложение. Однако, если ваш источник для приложения поврежден, то Вам необходимо получить новый диск или скачать новую версию приложения перед его попыткой установки. Как только приложение будет установлено правильно, ошибка runtime больше не должна возникать.
Как исправить Runtime Error 217: вирусная инфекция
Когда вирус заражает компьютер, может возникнуть ряд проблем, в том числе ошибки времени выполнения. Если ошибка runtime error 217 появляется из-за вирусной инфекции, просто просканируйте компьютер с помощью современных антивирусных приложений, чтобы её удалить.
Как исправить Runtime Error 217: неправильные региональные настройки
Если настройки Вашего компьютера неверны, может появится ошибка Runtime Error 217. Убедитесь, что настройки даты на вашем компьютере совпадают для страны, где вы находитесь.
Как исправить Runtime Error 217: устаревшие файлы msvcrt.dll
Если ошибка происходит из-за устаревшего файла msvcrt.dll, Вам необходимо заменить файл при обновлении операционной системы. Вы можете сделать это, посетив веб-сайт корпорации Майкрософт. Пока вы там находитесь, проверьте все существующие исправления, которые были выпущены для вашей версии Windows.
Как исправить Runtime Error 217: устаревший файл MS DCOM
Если ошибка появляется из-за устаревшего файла MS DCOM, получите последние обновления для вашей операционной системы через веб-сайт Microsoft.
Как исправить Runtime Error 217: отсутствует файл stdole32.tlb
Если вам не хватает файла stdole32.tlb, Вам необходимо скачать его и заменить. В то время как вы могли бы быть в состоянии получить этот файл на нескольких различных веб-сайтах, лучше всего получить его через библиотеки Microsoft dll.
Как исправить Runtime Error 217: сломанные или отсутствующие файлы реестра
Файлы реестра, которые стали сломанными или повреждены, могут быть восстановлены при запуске авторитетных программ registry cleaner на вашем компьютере. Выберите ту программу, которую вы хотите скачать, установите её и запустите, чтобы выполнить ремонт вашей системы.
Как исправить ошибку «Ошибка runtime 217 error»?
Featured
В этой статье мы расскажем вам, как избавиться от ошибки runtime 217 error at 123456.
Что делать если у вас стала возникать ошибка runtime 217 error?
Вот варианты решения проблемы:
1. Нажать комбинацию клавиш WIN+R и вставить следующее:
services.msc
нажать enter
2. Найти в открывшемся окне службу Брандмауэр Windows, вызвать контекстное меню и выбрать запустить.
Если служба была запущена или вариант не помог, то скачайте утилиту CCleaner Скачать
Установить ее и выполнить очистку и проверку реестра.
Помог чем-то? Поделись пожалуйста!
Содержание
- 6 Effective Ways to Fix Runtime 217 Error in Windows 10/8.1/8/7
- What does Runtime Error 217 Mean?
- Reason Behind Runtime Error 217
- How to Fix Runtime Error 217 in Windows 10/8.1/8/7
- Method 1: Perform Clean Boot
- Method 2: Update Msvcrt.dll File
- Method 3: Correct the Regional Settings
- Method 4: Disable Startup Programs
- Method 5: Run a Virus Scan
- Get Spyhunter to remove the virus and other malicious programs from your PC.
- Method 6: Run Registry Scan
- Get CCleaner to clean your Registry Entries
- Automatic Solution: PC Repair Tool
- Get PC Repair Tool to fix PC issues.
- Conclusion
- Как исправить ошибку Runtime Error 217.
- Здравствуйте, я ошибка 217 и я вам ничего не скажу
- Теория и анализ проблемы
- Отключаем финализацию модулей
- Пытаемся причесать хорошую мысль
- А не развить ли идею?
- Runtime Error 217 Windows PC Code Problem
- How to Fix & Solve Runtime Error 217 Windows Code Issue
- 1. Disable or Reinstall Windows Antivirus Software –
- 2. Fix by MSConfig Command –
- 3. Check & Correct your Windows Date & Time Settings –
- 4. Update your Windows Drivers –
- 5. Run Windows Antivirus for any Virus or Malware errors –
- 6. Run a full Registry Cleaner of your Windows PC –
- 7. Create a System Restore Point of your Windows PC –
6 Effective Ways to Fix Runtime 217 Error in Windows 10/8.1/8/7
While running an application there can be a possibility that you come face to face with an error called Runtime Error 217. This error is irritating for Windows user as it prevents them from executing any program. This error 217 occurs when a user tries to run any installed application or software. Sometimes this error also appears when the user boots or start their computer.
This error is one of the most irritating and dangerous error so it is necessary to get rid of this as soon as possible. Below are some of the methods given that will help you to fix Runtime Error 217 in Windows 10/8.1/8/7. But before discussing the methods first, let us find out what does runtime error 217 mean and the reason behind this error.
What does Runtime Error 217 Mean?
Runtime Error 217 can cause a big problem if you are using your computer for business purpose or you have stored any confidential data/documents in your system.
This runtime error 217 is quite risky. It can slow down your PC performance, can lead your system to failure and crash, make your system vulnerable to hacker’s attack and also can corrupt important files on your system.
Reason Behind Runtime Error 217
There are several causes that can trigger the runtime error 217, few of them are:
In order to fix this issue, you have to apply several solutions as there is more than one cause. Follow the below-given solutions one by one and check for the problem after applying each of them.
How to Fix Runtime Error 217 in Windows 10/8.1/8/7
Method 1: Perform Clean Boot
Method 2: Update Msvcrt.dll File
Msvcrt.dll file belongs to Microsoft Visual C++ Runtime Library. Runtime error 217 is also known to appear on the systems that have an outdated msvcrt.dll file present in it.
This specific file is used by third-party applications, but is usually outdated on older OS; resulting in runtime error 217.
You can simply update this file by updating Windows.
Follow the steps to update file:
Note: This error also occurs when the MS DCOM file on the system is outdated. If this is the same case in with your, then updating Windows will also update the Msvcrt.dll file.
Method 3: Correct the Regional Settings
Incorrect regional settings can cause runtime error 217 Windows. In order to fix runtime error 217, you need to correct the regional settings. Follow the steps to do so:
Method 4: Disable Startup Programs
If the runtime error 217 display on the screen right after the operating system gets started, then it means that the problem is caused by startup programs. It is possible that one or two programs are incompatible and may result in the error message. To correct this problem, first, you will need to identify and then disable the culprit program.
Follow the steps given below to disable the startup programs:
After performing the steps restart your system, the runtime error should no longer appear.
If no error appears, then repeat the process, until you encounter the runtime error 217. At this point, you should be able to locate which Startup program is causing the error. Then you can update or uninstall that particular program.
Method 5: Run a Virus Scan
Runtime errors are also known to occur on systems only when it has been infected with a virus/malware file that has corrupted key areas of OS, such as system files, boot sector, and program files. To avoid viruses from corrupting your system, you need to have a dependable antivirus tool installed and running on your computer. You should also run system scans on a daily basis so that it can detect and remove virus files that cause an error in your system.
If you don’t have a good antivirus tool then it is recommended to use Spyhunter.
Get Spyhunter to remove the virus and other malicious programs from your PC.
Method 6: Run Registry Scan
Windows registry is the main culprit for many errors that appears on your computer, not just runtime error 217. When any problems occur in the registry it can clear itself in a different number of ways, such as random error messages, degraded system performance, and constant windows restarting.
To fix this error, you need to clear the registry keys. Cleaning the registry key is quite a time taking process and risky so it is recommended to use third party Registry Cleaner Tool.
Get CCleaner to clean your Registry Entries
Runtime error 217 is one of the common errors that appear on the windows system due to an internal issue. If you are not so technical person in computer and find the above methods difficult to perform then run PC Repair Tool. This tool will automatically fix every issue/error regarding PC.
This Tool comes with the user interface so one can easily understand and run this tool without any hassle. It supports all Windows system and makes the performance of your PC as smooth as before.
Get PC Repair Tool to fix PC issues.
Conclusion
Here I have provided you the relevant information on how to fix runtime error 217 Windows 10/8.1/8/7. Perform the above-given methods to overcome the error 217.
Hope this article turns out to be helpful to you in solving your issue.
Even after trying the methods the problem appears then it is recommended to use PC Repair Tool to fix the problem automatically.
If you have any question or suggestion to give then feel free to visit us @ Facebook or Twitter.
Источник
Как исправить ошибку Runtime Error 217.
в Ошибки ПК 32,233 Просмотров
Ошибки времени выполнения, одни из тех проблем, которые преследуют пользователей компьютеров с Windows-based операционными системами. Исправление этих проблем зависит от конкретной ошибки во время выполнения, на что указывает количество и любой текст, который сопровождает сообщение об ошибке.
Что такое Runtime Error 217?
Runtime Error 217 может возникать по одной из множества причин. Эти причины включают в себя:
на вашем компьютере.
Как исправить Runtime Error 217: неисправные установки
Если вы подозреваете, что ошибка runtime error 217 возникает из-за неправильной установки, просто переустановите приложение. Однако, если ваш источник для приложения поврежден, то Вам необходимо получить новый диск или скачать новую версию приложения перед его попыткой установки. Как только приложение будет установлено правильно, ошибка runtime больше не должна возникать.
Как исправить Runtime Error 217: вирусная инфекция
Когда вирус заражает компьютер, может возникнуть ряд проблем, в том числе ошибки времени выполнения. Если ошибка runtime error 217 появляется из-за вирусной инфекции, просто просканируйте компьютер с помощью современных антивирусных приложений, чтобы её удалить.
Как исправить Runtime Error 217: неправильные региональные настройки
Если настройки Вашего компьютера неверны, может появится ошибка Runtime Error 217. Убедитесь, что настройки даты на вашем компьютере совпадают для страны, где вы находитесь.
Как исправить Runtime Error 217: устаревшие файлы msvcrt.dll
Если ошибка происходит из-за устаревшего файла msvcrt.dll, Вам необходимо заменить файл при обновлении операционной системы. Вы можете сделать это, посетив веб-сайт корпорации Майкрософт. Пока вы там находитесь, проверьте все существующие исправления, которые были выпущены для вашей версии Windows.
Как исправить Runtime Error 217: устаревший файл MS DCOM
Если ошибка появляется из-за устаревшего файла MS DCOM, получите последние обновления для вашей операционной системы через веб-сайт Microsoft.
Как исправить Runtime Error 217: отсутствует файл stdole32.tlb
Если вам не хватает файла stdole32.tlb, Вам необходимо скачать его и заменить. В то время как вы могли бы быть в состоянии получить этот файл на нескольких различных веб-сайтах, лучше всего получить его через библиотеки Microsoft dll.
Как исправить Runtime Error 217: сломанные или отсутствующие файлы реестра
Файлы реестра, которые стали сломанными или повреждены, могут быть восстановлены при запуске авторитетных программ registry cleaner на вашем компьютере. Выберите ту программу, которую вы хотите скачать, установите её и запустите, чтобы выполнить ремонт вашей системы.
(2 оценок, среднее: 1,00 из 5)
Источник
Здравствуйте, я ошибка 217 и я вам ничего не скажу
Вероятно многие встречались с таким вот «партизаном» при старте или завершении приложения:
Очень информативное сообщение, сразу понятна причина ошибки, место и способ ее решения.
Впрочем, если без шуток, что это вообще такое?
Конечно-же это исключение, но ни тип исключения, ни его описание нам не доступны — просто «Runtime error 217» и адрес, а дальше сами…
Если честно, раньше я как-то даже не задумывался по поводу данного исключения, т.к. в моих проектах оно явление редкое, пока однажды у целой череды пользователей не начала воспроизводится именно 217-я ошибка.
Впрочем, даже тогда я не пошел по правильному пути и просто добавил дополнительный уровень логирования в проект, по результатам которого достаточно оперативно нашел причину и исправил ее.
Но, по сути, я просто потратил свое время…
И тратил бы его в дальнейшем, если бы на днях со мной не связался Виктор Федоренков и не рассказал о своих мыслях по поводу ошибки за номером 217.
Теория и анализ проблемы
Без теории нам никуда, иначе можем уткнуться в пределы собственных знаний.
Поэтому начнем, конечно, с теоретической части.
Для начала я немного освежил мои представления об ошибках в принципе, перечитав часть статьи «Обработка ошибок — глава 1.2.2» за авторством Александра Алексеева, откуда вынес информацию о том, что ошибка 217 будет отображена в том случае, если не инициализирован модуль SysUtils, причем это у Александра проиллюстрированно достаточно наглядно:
Открыть картинку в полный размер…
На основании данной картинки можно сделать грубый вывод: пока SysUtils жив — все исключения должны отображаться в нормальном виде, о чем идет отдельное упоминание:
Например, если вы видите сообщение о runtime-ошибке, то, судя по приведённой схеме, маловероятно, чтобы ошибка возникла в обработчиках событий на форме. Зато гораздо вероятнее, что она возникает, скажем, в какой-то секции finalization (которая выполняется после секции finalization модуля SysUtils) или в назначенной процедуре ExitProcessProc. Но, разумеется, причина ошибки может сидеть где угодно — в том числе и в упоминаемых обработчиках событий.
Ну что-ж давайте проверим, пишем код, в котором SysUtils должна быть финализирована позже модуля Unit1, в котором искусственно генерируем исключение:
Билдим, запускаем, закрываем форму и… Runtime error 217.
Утверждение о том, что 217 отображается после финализации SysUtils полностью верное, но давайте-ка посмотрим на сам код финализации:
Смотрите что происходит: в процедуре FinalizeUnits вызываются все финализирующие процедуры, адреса которых расположены в массиве InitContext.InitTable^.UnitInfo в том порядке, в котором происходила их инициализация, т.е. самые первые расположены в начале массива (а финализация идет с конца).
Где-то в самом низу расположен и SysUtils + System, ну а мы, с нашим модулем Unit1 где-то в самом верху.
Но вдруг происходит исключение в нашем модуле и «бабах», порядок катарсиса нарушен.
После «бабах» FinalizeUnits вызывается повторно, пропуская наш модуль, вызвавший исключение, вследствие чего разрушается SysUtils и разные, встречающиеся по пути, class destructor-ы, до кучи грохается System с менеджером памяти (сидящий одним из первых в начале списка), после чего идет контрольный выстрел в лоб — RAISE, вот тут-то мы и приплыли — здравствуй 217.
А что если произойдет исключение в секции инициализации любого модуля?
Делаем вывод: любое необработанное исключение в секциях инициализации или финализации будет приводить к потере описания исключения и приводить к ошибке 217.
На этом с теорией, думаю, закончим.
Имея на руках понимание о причине возникновения Runtime error 217, попробуем получить на руки более привычный нам вариант сообщения об исключении.
Отключаем финализацию модулей
В самом начале обсуждения Виктором был предложен достаточно эффективный способ обхода данной ошибки.
Его анализ заключался в следующем: общая инициализация обработчика исключений производится в процедуре InitExceptions модуля SysUtils, а финализация вызовом DoneExceptions.
Если каким либо образом отключить вызов DoneExceptions плюс не дать разрушиться менеджеру памяти, заблокировав вызов блока финализации System — на руки мы получим сообщение об исключении в приемлимом виде.
Как вариант решения был предложен следующий код, который нужно подключить к файлу проекта самым первым модулем (будет работать начиная с D2005 и выше):
Если честно — аплодировал стоя.
Вот он: хак в самом грязном виде как он есть — такие вещи могут делать только те, кто действительно понимает, чем это грозит 🙂
И данный модуль вывел работу нашего IT отдела примерно на три часа — это была жесткая дискуссия 🙂
Но, впрочем, давайте разберем логику работы данного кода:
Суть его проста, необходимо выйти на данные о загруженных модулях (включая BPL) в том виде, в котором их понимает Delphi приложение. Это было сделано посредством доступа к началу однонаправленного списка структур TLibModule. Первым элементом списка будет структура, описывающая текущий образ, откуда нам нужно всего-то и получить данные о структуре UnitInfo, которая содержит в себе данные как о количестве инициализированных модулей, так и об адресах их процедур инициализации и финализации в виде записи PackageUnitEntry.
Блокирование финализации модулей происходит посредством присвоения параметру FInit значения nil у каждой записи PackageUnitEntry.
При обниливании данного параметра FinalizeUnits не сможет произвести вызов обработчика и в итоге тот самый raise, о котором я писал выше, сможет достаточно корректно произвести отображение возникшего исключения.
Но вот дальше все сложнее.
Пытаемся причесать хорошую мысль
Идея здравая и причины понятны, но вот как-же так, ресурсы все-же не освобождены, FastMem перестанет нормально работать (она собирает утечки как раз при финализации), да и совместимости маловато, к примеру, как я и сказал выше, под Delphi 7 данный код вообще работать не сможет.
После первого часа обсуждений в IT отделе мы даже умудрились прийти и к такому выводу: «да и хрен с ними с SysUtils и System — что-то критичного они за собой не несут».
А потом, опять начали спорить — ну не устраивал нас этот подход, вроде все хорошо, но не аккуратненько как-то.
Рассматривались даже варианты прямого сплайсинга блоков финализации и до кучи деструктора Exception — но дополнительный хак, на уже существующий хак не устраивал вообще никого.
И тут, сидя в отладчике и прогоняя код по 70-му разу пришла мысля.
Дык эта… а как вообще выводится сообщение о произошедшем исключении?
А выводится оно посредством передачи управления на ExceptHandler, в коде которого нет ничего секретного.
А что мы делаем убирая финализацию модулей?
Правильно, заставляем вызваться его-же.
Попробуем-ка проэмулировать вызов ExceptHandler.
Пишем тестовый юнит и подключаем его к проекту самым первым:
Запускаем на выполнение и…
Получилось.
Встроившись в цикл финализации, мы отобразили произошедшее исключение и продолжили финализацию дальше вызовом Halt(1).
В итоге задача решена, грамотно и документировано, и совместимо с Delphi 7, но…
А не развить ли идею?
Есть такое понятие, как «наведенные ошибки», т.е. ошибки произошедшие из-за того что перед ними тоже произошла ошибка.
Ну к примеру, функция А, которая должна возвращать экземпляр некоего класса и функция Б, использующая этот экземпляр в работе. К примеру в функции А произошло необработанное исключение (например нет доступа к файлу) и она не создала класс, а потом где-то гораздо позже по коду приложения процедура Б выполняет обращение к этому экземпляру и в итоге происходит Access Violation.
Тоже самое может произойти и в процедурах инициализации/финализации, причем исключение, произошедшее в финализации скроет от нас саму причину.
Для демонстрации напишем вот такой код, в котором при инициализации приложения будет создаваться некий логер, в который будут писаться этапы работы приложения, а в финализации будет запись о завершении работы.
Для генерации исключения заставим логер создаваться по несуществующему пути:
Мало у кого в системе присутствует диск «А» поэтому результатом этого кода будет либо «Runtime error 216» (именно 216, а не 217), либо, если подключим код из предыдущей главы:
Exception EAccessViolation in module Project2.exe at 001B1593.
Access violation at address 005B1593 in module ‘Project2.exe’. Read of address 00000000.
А ведь причина то кроется в самом первом исключении, которое нами не отображается и с наскока разобраться в причине ошибки не получится.
Для того чтобы исправить эту несправедливость, можно немного причесать код и довести его до вот такого состояния:
Здесь идея проста, функция GetNextException по сути повторяет вызов AcquireExceptionObject, но после своего вызова не теряет ссылку на следующее в очереди исключение, а запоминает адрес следующего фрейма во внешней переменной.
После чего все исключения заносятся в список (самое последнее будет первым в списке) и выводятся программисту с соблюдением очередности, в результате чего нам будет сразу понятно, что сначала произошло вот это:
И уже только после него пошли всякие там AV.
Теперь по поводу остальных кодов ошибок.
Почему я начал именно с «Runtime error 217»?
Ну потому что она наиболее легко воспроизводима, а так технически, используя выше приведенный модуль, мы получим на руки вполне нормальное описание всех возможных Runtime ошибок, коих в наличии у нас вон сколько:
Вот таким небрежным кодом, мы можем получить то, о чем нам не хочет говорить ошибка под кодом 217.
Впрочем, я не думаю что этот подход будет незнаком опытным программистам.
Скорее всего это — здравствуй велосипед, ибо вероятнее всего данная проблема кем-то уже решалась ранее, но я просто не знал о данном решении.
А если нет — значит буду вторым.
Отдельный респект соавтору и вдохновителю данной статьи — Виктору Федоренкову.
Источник
Runtime Error 217 Windows PC Code Problem
Runtime Error 217 Â Windows PC code problem is the common runtime error which indicates that there is something wrong with your software or hardware.
This Windows issue occurs due to the faulty installation, missing DLL files, virus or malware infection, and registry errors. It mainly takes place in the windows when you try to open any program or any applications. This error may also slow down your PC. It is a type of Windows errors. This Error 217 error problem includes computer crashes and freezes.
This shows an error code message like,
Runtime Error 217
Causes of Runtime Error 217 Windows Issue :
You may also like;
So, here are some top best accessible guide for fixing and solving this type of Runtime Error 217  Windows PC code problem from your PC permanently.
How to Fix & Solve Runtime Error 217 Windows Code Issue
1. Disable or Reinstall Windows Antivirus Software –
By Disabling or Reinstalling the Antivirus software will fix this Runtime Error 217 at 500e8338 code problem from your PC.
2. Fix by MSConfig Command –
By cleaning the boot, you can quickly get back from this Runtime Error 217 Windows 7 code problem.
3. Check & Correct your Windows Date & Time Settings –
Check the Date and time settings and change it so that it can quickly fix this Spasoft Runtime Error 217 Windows 10 code problem.
4. Update your Windows Drivers –
By trying this practical method, you will get back from this type of Spybot Runtime Error 217 at 00580d29 issue.
” OR “
Upgrading your driver by any of these two methods can quickly fix and solve this Spybot Runtime Error 217 at 500e8338 code problem from your PC.
5. Run Windows Antivirus for any Virus or Malware errors –
By scanning your PC for malware/virus by the Microsoft Security Essentials can quickly fix and solve this Runtime Error 217 Windows 7 code problem.
6. Run a full Registry Cleaner of your Windows PC –
Fixing by Cleaning the Registry from Ccleaner it can fix this autodata 3.40 Runtime Error 217 Windows 10 code problem from your PC.
7. Create a System Restore Point of your Windows PC –
By runs this above tip you will fix this Runtime Error 217 autodata problems from your PC.
“ OR “
Run a system restore and creating a new restore point by any of these two methods can solve this Runtime Error 217 Windows 10 code problem from your PC completely.
These are some best essential guide to fix and get rid of this Runtime Error 217 Â Windows PC system problem from your PC altogether. Hope it will help you to get back from this error problem quickly, and you liked this Runtime Error 217 Windows 10 post too.
Also, read;
If you are facing any error problem while fixing this Runtime Error 217Â Windows PC code problem or fixing any error problem, then comment down the problem below so that we can fix it by our top best tricky solution methods guide.
Источник