Управление версиями и подписание элементов управления ActiveX

#internet-explorer #activex #add-on #cab

#internet-explorer #activex — активация #надстройка #cab

Вопрос:

Я создал элемент управления ActiveX, упакованный как cab, и поместил его на свой веб-сервер. Cab был подписан цифровой подписью с фиктивной подписью. На клиентском компьютере в «C:WindowsDownloaded Program Files» Я смог найти файлы dll и osd, которые были извлечены из cab. Теперь я купил настоящий сертификат и подписал cab на сервере с его помощью. Когда я вошел в систему как клиент, после настройки некоторых параметров безопасности я ожидал увидеть приглашение для загрузки элемента управления ActiveX с моим именем в качестве издателя. Этого не произошло. Затем я перешел к «C:WindowsDownloaded Program Files», удалил dll и osd-файл, которые были извлечены из cab, снова вошел в систему как клиент, а затем я увидел то, что ожидал увидеть: приглашение для загрузки элемента управления ActiveX с моим именем в качестве издателя. Мой вопрос: почему я не мог увидеть подпись при первом входе в систему? конечно, файлы dll и osd уже были там, и у dll была та же версия, но разве тот факт, что cab был подписан новой подписью и помечен временем, ничего не значит? и еще один вопрос — если у dll внутри cab был более новый номер версии, чем у «C:WindowsDownloaded Program Files», будет ли он затем перезаписан?

Ответ №1:

Очевидно, что определяется номер версии, чтобы решить, следует ли повторно загружать элемент управления. Если номер версии CAB более новый, чем у локальной копии, он перезапишет версию в «C:WindowsDownloaded Программные файлы».

Комментарии:

1. Что определяет версию cab? Как я могу это увидеть? Идентичен ли он версии библиотеки dll внутри? Является ли это версией, указанной в свойстве code base тега object в html?

2. Кстати, я вижу, что когда я меняю версию в свойстве codebase на «-1, -1, -1, -1» или любую версию, которая больше версии dll на клиентском компьютере, при каждом обновлении страницы клиента появляется приглашение. Если версия в свойстве codebase равна или меньше, cab не загружается и не запрашивается. Итак, я хочу посмотреть, получу ли я рабочий процесс: IE сравнивает версию dll на компьютере клиента с версией, указанной на странице html. Если версия клиента не обновляется, cab загружается с сервера. В противном случае используется клиентская dll. Правильно?