bitcoin писал(а):см. скриншот ниже.
А как устанавливалась VB6? Такое впечатление, что просто скопировали файлы и ничего не устанавливали.
Конкретно данная ошибка при запуске вызывается вот чем:
На определённом этапе процесса запуска VB6 происходит проверка того, зарегистрирован ли ряд библиотек типов (type library) в реестре. Одна из таких библиотек — библиотека типов внутри DAO350.DLL. Сначала вызывается QueryPathOfRegTypeLib(), куда передаётся LIBID библиотеки типов, а в ответ возвращается имя файла, в котором проживает зарегистрированная в реестре библиотека типов. Если библиотека с нужным LIBID-ом зарегистрирована в реестре, проверяется, что имя файла, которое зарегистрировано в реестре, совпадает с «DAO350.DLL», а вторым шагом проверяется, что к файлу есть доступ.
Если же библиотека типов с нужным LIBID-ом (
{00025E01-0000-0000-C000-000000000046}) не зарегистрирована в реестре, совершается несколько попыток найти DLL-файло с этой библиотекой типа и зарегистрировать его.
Попытки предпринимаются в следующем порядке:
1) Попытка найти и зарегистрировать DAO350.DLL, лежащей в том же каталоге, что и исполняемый файл VB6.EXE
2) Попытка найти и зарегистрировать DAO350.DLL, лежащей в системном каталоге (тот, который возвращает функция
GetSystemDirectory() — по умолчанию это «System32» в %windir%)
3) Попытка найти и зарегистрировать DAO350.DLL, лежащей в Windows-каталоге (тот, который возвращает функция
GetWindowsDirectory() — по умолчанию это «C:\WINDOWS»).
Если в каком-то из мест файл найден, производится проверка наличия доступа к нему и попытка его загрузить (LoadTypeLib) и зарегистрировать (RegisterTypeLib) библиотеку типов, содержащуюся в нём.
Если ни один из описанных путей выполнения не принёс успеха, как раз и будет показано то сообщение, что мы видим на скриншоте.
То есть, что это означает:
- Файл DAO350.DLL, точнее содержащаяся в нём библиотека типов не зарегистрирована в реестре (либо зарегистрирована, но у неё неправильный LIBID в силу каких-то причин).
- VB6 не удалось найти файл ни в одном из трёх мест, где он пытается его найти (а по умолчанию, при установке VB6 в составе Visual Studio 6 его ни в одном из этих мест и не должно быть — он кладётся в %programfiles%\Common Files).
- А если и удалось найти, то оказалось, что у процесса нет доступа к файлу.
- А если доступ и есть, то попытка загрузить TLB-ку не удалась (например, файл повреждён).
- А если и удалось прочитать, то не удалось зарегистрировать (например потому, что у процесса VB6.EXE нет прав на доступ к реестру на запись (доступ к разделу HKEY_CLASSES_ROOT/TypeLib.
Что-то из этого.
Windows 10 тут, собственно, не причём, любой из этих факторов, ведущи к ошиьке, мог и на Windows 2000 возникнуть.