Вопрос или проблема
Недавно я установил версию VB6 (Enterprise) на машину с Windows 11. Когда я ранее запускал VB6 на Windows 10, я мог использовать популярный исправляющий аддон для колесика мыши, вызывая regsvr32 <addin_path>.dll
(запуская от имени администратора), и тогда VB6 мог распознавать аддон и отображать его в менеджере аддонов. Однако, когда я запускаю VB6 с правами без повышения, ни один из этих аддонов (включая те, которые, предположительно, поставляются с установкой) не появляется в менеджере.
Из-за политики я не могу позволить пользователю просто запускать VB6 от имени администратора каждый раз, когда он хочет его использовать.
Вот что я сделал до сих пор:
- Я нашел ключ реестра, созданный при вызове
regsvr32
(HKLM\SOFTWARE\Classes\VB6IDEMouseWheel.Connect
) и затем продублировал его в том же месте, просто под HKCU. - Я пытался разместить и зарегистрировать .dll в той же папке, где находится исполняемый файл VB6 (конечно, аннулировав любые предыдущие попытки перед повторной регистрацией).
- Я изменил параметры безопасности папки, где находятся исполняемый файл (и .dll), чтобы пользователи и программы имели такой же доступ, как и на уровне администратора.
Я не уверен, окажет ли это какое-то влияние на эту проблему, но во время установки я снял галочки с компонентов ActiveX и провайдеров ADO, RDS и OLE DB. Я обнаружил, что если я этого не сделаю, установка не будет работать на Windows 11. Я также запускал установку в режиме совместимости для Windows XP Service Pack 3.
Решение на самом деле описано в очень старой статье Microsoft TechNet KnowledgeBase (Q190212), которая больше недоступна:
Q190212: ОШИБКА: Аддоны видимы только пользователю, который устанавливает VB
В кратце:
-
Экспортируйте следующие ключи реестра для пользователя, где аддоны отображаются корректно (т.е. для пользователя-администратора):
HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\Addins
HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\AddInToolbar -
Импортируйте эти .reg файлы, войдя в систему как целевой пользователь.
Мне не удалось найти способ сделать это для всех пользователей. Изменение HKEY_CURRENT_USER на HKEY_LOCAL_MACHINE не оказало эффекта.
Источник: https://jeffpar.github.io/kbarchive/kb/190/Q190212/
Ответ или решение
Проблема: Отображение надстроек VB6 только при запуске от имени администратора на Windows 11
Если вы столкнулись с проблемой отображения надстроек Visual Basic 6 (VB6) только при запуске приложения от имени администратора на Windows 11, это связано с тем, как Windows обрабатывает разрешения и доступ к реестру для разных пользователей. Ниже приведены подробные шаги по решению данной проблемы, основываясь на вашем описании и имеющихся данных.
Причины проблемы
- Разграничение доступа: Надстройки регистрируются в реестре под пользователем, который выполняет команду
regsvr32
, что ограничивает доступ к ним для других пользователей. - Разрешения реестра: Запись надстроек может существовать только в области
HKEY_CURRENT_USER
, что означает, что другие пользователи (кроме администратора) не могут видеть эти надстройки. - Настройки безопасности: На Windows 11 могут быть установлены более строгие настройки безопасности, которые способствуют этой проблеме.
Решение проблемы
Для решения данной проблемы воспользуйтесь следующими шагами:
-
Экспортируйте ключи реестра:
- Войдите в систему как администратор или пользователь, у которого надстройки отображаются правильно.
- Откройте редактор реестра (
regedit
) и перейдите к следующему пути:HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\Addins HKEY_CURRENT_USER\Software\Microsoft\Visual Basic\6.0\AddInToolbar
- Щелкните правой кнопкой на каждом из этих ключей и выберите "Экспорт". Сохраните файл
.reg
, чтобы перенести его позже на другой аккаунт.
-
Импортируйте ключи реестра:
- Войдите в систему под другим пользователем, для которого не отображаются надстройки.
- Дважды щелкните на экспортированные
.reg
файлы и подтвердите внесение изменений в реестр.
Дополнительные рекомендации
-
Проверьте настройки безопасности: Убедитесь, что у пользователя, у которого не отображаются надстройки, есть достаточные права доступа к папке, где находится VB6 и его надстройки.
-
Регистрация .dll файлов: Для надстроек, которые требуют регистрации, выполняйте команду
regsvr32
от имени администратора. Если это уже было сделано, и вы видите, что проблема сохраняется, попробуйте зарегистрировать их в той же папке, где находится исполняемый файл VB6. -
Пока не найдено общего решения: Проблемы, связанные с VB6 и Windows 11, остаются актуальными, и разработка универсального решения требует времени. Следите за обновлениями сообщества, касающимися обратной совместимости.
Заключение
Запуск VB6 на Windows 11 с проблемами отображения надстроек может вызвать затруднения, особенно учитывая, что решение ограничивается доступом к реестру. Следуя вышеуказанным шагам, вы сможете обеспечить доступ к вашим надстройкам без необходимости постоянного запуска программы с правами администратора. Регулярно проверяйте наличие обновлений и патчей, которые могут улучшить совместимость VB6 с последующими версиями Windows.