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?