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