2016-07-28 3 views
0

Что такое подредактор реестра HKCR\VBKeySave5? Почему это так сильно влияет на производительность VB6 IDE?VB6 IDE Slowness и 'VBKeySave5' в реестре

фона:

Один из наших компьютеров развития (Windows 10 x64) была очень медленной загрузки VB6 IDE. Сначала IDE медленно загружалась и очень медленно вызывала окно ссылок на проект. (Десятки секунд или даже ~ минут).

Пуринговый реестр для одной из библиотек, используемых в проекте, показал поддерево HKCR\VBKeySave5. Под этим поддеревом были тысячи записей, которые выглядели как обычные COM-болота GUID, идентификаторы классов, имена классов и т. Д., Которые вы получаете с DLL-библиотеками VB6, и т. Д.

Удаляя этот ключ и все, что под ним, сделало IDE неизмеримо более быстрым - в основном он будет загружаться, а затем показывать окно ссылок мгновенно.

В результате этого ничего плохого не произошло.

+0

Я разместил свои собственные наблюдения, которые проливают свет на это. Но я понятия не имею, если это полно или полностью правильно. Заинтересованы в других наблюдениях. – DaveInCaz

ответ

3

Похоже, что поддерево VBKeySave5\ используется VB6 IDE при работе с несколькими проектами в группе.

При работе в группе VB6 умело использует все COM-ссылки, которые обычно подаются из скомпилированной DLL, на самом деле перенаправляются на IDE, поэтому вы можете отлаживать права на проекты в той же группе. Кажется, что используется поддерево VBKeySave5\, чтобы реализовать часть этого волшебства.

Я сделал тестовый проект, содержащий одну тестовую DLL. Затем была создана тестовая группа, содержащая оба. С помощью Process Monitor я наблюдал за тем, что IDE делала в реестре. Это основная последовательность событий:

  1. проектная группа Load
  2. Run группа проекта - отладка начинается
  3. IDE создает VBKeySave5\ поддерева
  4. IDE заполняющее, что поддерево с кучей вещей
  5. Test программа выполняется в IDE/отладчике
  6. Программа испытаний завершается
  7. IDE удаляет все материалы под номером VBKeySave5\
  8. IDE возвращается в режиме редактирования (отладка заканчивается)

В этом случае, ничего лишнего не остается в реестре.

Теперь - если после 5-го шага я убил процесс VB6.exe, все реестр, который он добавил, никогда не удаляется.. И снова запуск VB6 и запуск одной и той же группы не очищает его - вместо этого он создает немного другой материал под номером VBKeySave5\.

Так что со временем, особенно с большими проектами, случаи, когда IDE заканчивается аномально, добавляют в бесполезный беспорядок беспорядок в реестр. И кажется, что этот беспорядок все еще должен быть прочитан IDE при загрузке проекта и т. Д., Замедляя его.

В нашем случае по какой-либо причине IDE вылетает много.И мы регулярно используем проектные группы (с 4, 5, 6 проектами). Таким образом, похоже, что эти сбои выросли до VBKeySave5\ с большим количеством записей, и это приводит к замедлению.

Возможно, есть ситуации, кроме аварий, когда VB6 не очищается после себя.


обновление 20 февраля 2017: Additional information related to why VBKeySave5 might not be cleaned up automatically:

ВС Installer для Windows 10 позволяет установить режим VB6.EXE совместимости с Windows Vista (Service Pack 2).

НЕ ДЕЛАЙТЕ ЭТО.

Не запускайте VB6 IDE в режиме совместимости любого типа. Цель - исправить аномалии в графическом дизайнере IDE . Поверьте мне, эти аномалии ничто по сравнению с повреждением осталось в вашем реестре Windows, когда VB6.EXE запущен в совместимости режиме.

Когда VB6.EXE используются для компиляции и работайте приложение, он заменяет GUIDs и регистрацию классов и TYPELIB заставляя их обратиться к его VB6DEBUG.DLL. это позволяет IDE перехватывать выполнение вашего кода , чтобы вы могли отлаживать. Когда он заменяет вашу регистрацию DLL и OCX , она сохраняет ваши вещи под HKCR \ VBKeySave5. К сожалению, когда VB6.EXE настроен на запуск в режиме совместимости с более ранней версией Windows , он не может восстановить всю вашу регистрационную информацию DLL и OCX. Он оставляет VBKeySave5 там, что приводит к тому, что ваша IDE занимает гораздо больше времени во время последующих запусков среды IDE, а - это перерывы вашего реестра, в результате чего ваше приложение не работает на вашем компьютере.

+0

Имеются скудные результаты Google для VBKeySave5, но у этого есть анекдот около 75 000 записей под этим поддеревом: http://microsoft.public.vb.general.discussion.narkive.com/HiZzcgi6/vb6-sp6-and-xp- sp1-ide-performance – DaveInCaz

+0

Полезный пост, даже если он не принят в качестве ответа. – Bob77

+0

Возможно, это связано с настройками совместимости. Интересует любые комментарии. Из комментария на странице http://blog.danbrust.net/2015/09/14/installing-visual-basic-studio-6-on-windows-10/#.WFKLr7IrLjR «Когда VB6.EXE используется для компиляции- И-Запустите приложение, оно заменяет идентификаторы GUID и класс и typelib, заставляя их ссылаться на VB6DEBUG.DLL, что позволяет IDE перехватывать выполнение вашего кода, чтобы вы могли отлаживать. Когда он выполняет эту замену регистрации DLL и OCX , это сохраняет ваши вещи под HKCR \ VBKeySave5 ... – DaveInCaz

0

Большое спасибо, это сработало для меня ваше предложение. Я отправил ваше решение для своей проблемы в: Visual Basic 6.0 and Windows 10

+0

Вместо того, чтобы добавлять здесь еще один ответ, вы должны проголосовать за ответ выше. – DaveInCaz

Смежные вопросы