Nano Hash - криптовалюты, майнинг, программирование

Удаленная регистрация DLL без доступа к HKEY_CLASSES_ROOT

У нас есть устаревшее приложение 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+ на клиентской машине с ограниченным безопасным доступом?

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


Ответы:


1

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

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

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

16.06.2010
  • Все ваши комментарии попали в цель, и мы настаивали на них. Я бы хотел, чтобы ответ был простым переходом на .net. Вся новая разработка выполняется в .net, но остальная часть приложения просто работает, и исправления ошибок случаются. Мы хотим, чтобы он работал как есть, без полной перезаписи. GUID и интерфейсы меняются не часто, мы использовали ProcMon/Regmon, чтобы увидеть, что происходит, и это одна из альтернатив, которую мы можем использовать. Как вы упомянули, Reg Free COM не является альтернативой, которую мы можем использовать. 17.06.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..