Страница 1 из 1

VB 6 и Windows 10 ?

СообщениеДобавлено: 10.01.2022 (Пн) 17:23
bitcoin
Всем добрый вечер. Такой вопрос - реально ли как-то заставить VB 6 работать на десятке? Или какие ОС используете вы?
Нашел на рутрекере бейсики, ни один не работает на вин10.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 11.01.2022 (Вт) 14:41
Хакер
А что значит «не работает»?

Я ни разу не сидел под Windows 10, но как чтобы понять, что не так и какие меры предпринять, чтобы заставить VB6 работать под Windows 10, нужно знать, что именно происходит.

Вообще запускается?
Запускается и сбоит? С каким-то сообщением об ошибке? Молча, без всякого сообщения?

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 11.01.2022 (Вт) 16:02
Mikle
На 10-ке не пробовал, но думаю, что это та же проблема, что и на 7-8. Устанавливать VB6 нужно из-под админа, но не просто, при этом ещё сам файл Setup нужно запускать от имени администратора, делается через меню по ПКМ.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 11.01.2022 (Вт) 16:52
bitcoin
Хакер писал(а):А что значит «не работает»?
см. скриншот ниже.

А где взять официальную версию VB 6 ? Или есть может какие-то "сборки"? Я сам не пишу, но возникла нужда отредактировать один проект на бейсике.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 11.01.2022 (Вт) 19:05
Хакер
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 возникнуть.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 11.01.2022 (Вт) 19:11
Хакер
Соответственно, первый шаг к исправлению проблемы:
С помощью редактора реестра найти раздел HKEY_CLASSES_ROOT\TypeLib\{00025E01-0000-0000-C000-000000000046} и, если такой есть, посмотреть содержимое.

Если его нет, значит библиотека типов для DAO 3.50 на зарегистрирована ни в каком виде. Если раздел в реестре есть, посмотреть, какие там подключи/подразделы.

У меня, например, зарегистрированы две TLB-шки для DAO 3.51 и DAO 3.60:
dao_tlb_registration.png
dao_tlb_registration.png (16.05 Кб) Просмотров: 318

(У большинства людей вместо «c:\os\common» будет «C:\Program Files\Common Files»)

Для работоспособности VB6 требуется наличие первого из двух. Если ключ есть, нужно вторым шагом посмотреть, существует ли указанный там файл на самом деле.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 11.01.2022 (Вт) 23:50
bitcoin
Хакер писал(а):А как устанавливалась VB6? Такое впечатление, что просто скопировали файлы и ничего не устанавливали.

Это какая-то портабл сборка с рутрекера.
Спасибо за матчасть, попробую установить с 0, будет ли ошибка.
Хакер писал(а):VB6 не удалось найти файл ни в одном из трёх мест, где он пытается его найти (а по умолчанию, при установке VB6 в составе Visual Studio 6 его ни в одном из этих мест и не должно быть — он кладётся в %programfiles%\Common Files).
может бейсик проверяет PROGRAM FILES, а при установке оно идет вроде в program files x86? Вообще, работало у кого-то на 64 битной ОС? В порядке интереса.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 12.01.2022 (Ср) 6:54
kibernetics
На 10-ке всё работает уже сколько лет.
Проблема с DAO350.DLL при первой установке общеизвестная.
Я уже точно не помню что именно надо сделать, но там что-то связанное с редактированием какого-то файла в дистрибутиве.
Поищи в инете, есть описание что именно надо править.

А так никаких проблем с VB6 на 10-ке, точно нету.


П.С. вот, кстати, первый же поиск выдал:
На Visual Basic 6.0 CD (или каков бы ни был ваш источник установки) найдите файл Dao350.dll, а затем скопируйте его в каталог C:\Program Files\Microsoft Visual Studio\VB98.
После применения этого исправления. Visual Basic 6 теперь может успешно работать на вашем компьютере.
NOTE: файл Dao350.dll находится в папке \os\system на Visual Basic 6.0 CD.


Но, вообще, лет 10 назад, я таскал с собой портейбл версию на флешке, и она везде у меня работала. :D

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 12.01.2022 (Ср) 7:43
Хакер
bitcoin писал(а):может бейсик проверяет PROGRAM FILES, а при установке оно идет вроде в program files x86? Вообще, работало у кого-то на 64 битной ОС? В порядке интереса.

Он не проверяет Program Files напрямую, он проверяет то, что я написал, в том порядке, в каком я написал. Program Files проверяется косвенно, если именно с таким путём библиотека зарегистрирована в реестре — напрямую вшитого куда бы то ни було пути «C:\Program Files» нигде нет.

У меня вообще система твикнута так, что у меня вместо c:\windows — c:\os\xp, вместо c:\Documents and Settings — c:\users, а вместо c:\Program Files — c:\soft. И никаких проблем.

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 12.01.2022 (Ср) 8:26
Хакер
kibernetics писал(а):На Visual Basic 6.0 CD (или каков бы ни был ваш источник установки) найдите файл Dao350.dll, а затем скопируйте его в каталог C:\Program Files\Microsoft Visual Studio\VB98.
После применения этого исправления. Visual Basic 6 теперь может успешно работать на вашем компьютере.


Можно и в System32 и в %windir%. Только вот запускать после этого VB6 как минимум первый раз нужно будет с правами, позволяющими регистрацию TLB-шек в реестре, то есть с правами администратора (если в Win10 не придумали какой-то ещё более строгой градации прав).

Re: VB 6 и Windows 10 ?

СообщениеДобавлено: 12.01.2022 (Ср) 16:20
Diamock
Во, как!.. Возьму на вооружение...