Удаленная регистрация DLL без доступа к HKEY_CLASSES_ROOT - PullRequest
3 голосов
/ 16 июня 2010

У нас есть устаревшее приложение 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.

IsЕсть ли способ перенаправить clireg32.exe для регистрации компонента HKEY_CURRENT_USER?Существуют ли какие-либо другие методы, которые позволили бы нам зарегистрировать эти компоненты COM + на клиентском компьютере с ограниченным доступом к безопасности?

На данный момент единственным нашим решением будет ручная запись регистрационной информации в реестр, но это не так.идеально и будет проблема с обслуживанием.

1 Ответ

4 голосов
/ 17 июня 2010

Я вижу несколько счастливых ответов здесь.Понятие приложения, использующего 12-летнюю технологию, нуждающуюся в установке обновлений, является странным и не очень хорошо поддерживается на современных машинах.Я считаю, что такое общее решение, как reg-free COM, несовместимо с COM +.Также довольно странно, что обновление стиля исправления ошибок должно было бы перерегистрировать компоненты.Подтвердили ли вы, что это действительно необходимо?

Продолжая тему, как часто вы на самом деле меняете GUID в развертываниях?Если вы сами берете на себя ответственность за регистрацию, а не оставляете ее на усмотрение самих компонентов, это должно работать, когда ключи не меняются постоянно.Это может быть так же просто, как захват регистрации с помощью утилиты SysInternals ProcMon. Создайте файл .reg, который вместо этого устанавливает ключи HKCU.

Кроме того, вам действительно нужно получить право на ключи реестра, которые не доступны для записи.Если вы не можете получить одобрение от клиента, то подумайте о том, чтобы попросить запланированное задание, которое устанавливает обновления.Они могут получить доступ при условии, что это разрешено администратором sys.

...