Подтвердить что ты не робот

Как предотвратить Windows от кеширования Com Class info?

Windows 7 кэширует некоторую информацию о COM-классе. Старые ОС этого не делали. После того как ОС просмотрит значение HKCU\Software\Classes\CLSID\{GUID}\LocalServer32, оно кэширует значение и больше не ищет его.

Когда мы обновляем наше программное обеспечение, мы размещаем новые обновления в другом каталоге, а затем обновляем значение HKCU\Software\Classes\CLSID\{GUID}\LocalServer32, чтобы отразить новый путь. В следующий раз, когда программное обеспечение запустится, он будет использовать последние файлы, если работает под старыми ОС Windows. Однако в Windows 7 он будет продолжать использовать старый файл, пока ОС не будет перезагружена.

Я запустил монитор процесса и обнаружил, что в Windows 7 он никогда не читает раздел реестра после первого чтения. В более старых ОС он каждый раз читает этот ключ.

Мой вопрос: есть ли способ заставить Windows 7 перечитывать информацию LocalServer32 из улья HKCU каждый раз, когда создается новый из COM-объекта proc?

4b9b3361

Ответ 1

Я смог решить эту проблему только...

1: остановка процесса

2: явно отменить регистрацию с использованием regsvr32 в библиотеке (или exename/unregserver)

3: Регистрация нового компонента

4: Запуск процесса резервного копирования.

Я подозреваю, что это часть Un Reg, которая терпит неудачу для вас. Если вы просто меняете ключ реестра напрямую, тогда вы должны вызвать RegSvr32/u.

Также убедитесь, что новое расположение каталога является текущим каталогом при вызове RegSvr32.

Обратите внимание, что я всегда останавливал процесс, а затем незарегистрирован, это, вероятно, значительная деталь.

Ответ 2

Поскольку это самый высокий результат в Google для этой узко-проблемной проблемы, я подумал, что было бы полезно добавить мой результат устранения неполадок для этой проблемы.

Я нашел этот ответ на SO: С#: Как изменить реестр Windows и вступить в силу немедленно

И связанное решение из этого ответа: Registry Watcher С#

Оба варианта кажутся жизнеспособными для управления измененными ключами без принудительной перезагрузки. Для нас (например, OP) это было при установке обновлений. Для нас (возможно, в отличие от OP) это редко, и мы решили, что усилия по внедрению и тестированию исправления, как описано, перевешиваются простым решением, требующим перезагрузки: процесс, который пользователи Windows ожидают от установки программного обеспечения в любом случае.