У нас есть устаревшее приложение VB6, которое обновляет себя при запуске, загружая последние файлы и регистрируя компоненты COM. Это работает как для локальных (regsvr32) COM-компонентов ActiveX, так и для удаленных (clireg32) COM-компонентов ActiveX, зарегистрированных в COM+ на другом компьютере.
Новые требования не позволяют нам писать в HKEY_LOCAL_MACHINE (HKLM) из соображений безопасности, что, очевидно, и происходит по умолчанию при вызове regsvr32 и clireg32.
Мы придумали способ зарегистрировать локальный COM-компонент в HKEY_CURRENT_USER\Software\Classes (HKCU) с помощью RegOverridePredefKey метод Windows API. Это работает путем перенаправления вставок в реестр в расположение HKCU. Затем, когда создаются экземпляры COM-компонентов, Windows сначала обращается к HKCU, а затем ищет информацию о компонентах в HKLM. Это заменяет то, что делает regsvr32.
Проблема, с которой мы сталкиваемся в настоящее время, заключается в том, что когда мы пытаемся зарегистрировать VBR/TLB с помощью clireg32, этот процесс регистрации также добавляет регистрационные ключи в HKEY_LOACL_MACHINE.
Есть ли способ перенаправить clireg32.exe для регистрации компонента HKEY_CURRENT_USER? Существуют ли какие-либо другие методы, которые позволили бы нам зарегистрировать эти компоненты COM+ на клиентской машине с ограниченным безопасным доступом?
Нашим единственным решением на данный момент было бы вручную записать регистрационную информацию в реестр, но это не идеально и будет проблемой обслуживания.