В Windows 7 компоненты COM, перечисленные в заголовке, по умолчанию имеют значение "killbit", установленное в COMPAT_EVIL_DONT_LOAD (сравните MSDN ), то есть их флаги совместимости в HKLM \ SW \ IE \ ActiveX Compatibility \ {} \ , похоже, по умолчанию установлено на это значение:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{B09DE715-87C1-11D1-8BE3-0000F8754DA1}]
"Compatibility Flags"=dword:00000400
Когда я устанавливаю значение на 0 (вот что Диспетчер совместимости ActiveX от Nirsoft работает при «активации» компонента COM), все работает нормально.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{B09DE715-87C1-11D1-8BE3-0000F8754DA1}]
"Compatibility Flags"=dword:00000000
Но это всего лишь решение с графическим интерфейсом для одной рабочей станции.Для развертывания нашего программного обеспечения мне необходима безопасная и стабильная процедура (скрипт или инструмент), поставляемая с нашим программным обеспечением, которая не только устанавливает «killbit» в 0 или удаляет запись в реестре (какая процедура должна быть предпочтительнее?), Но и проверяетСитуация до и ничего не делает, если ничего не нужно.Желательно, чтобы решение просто передавалось по имени файла или списку файлов и самостоятельно обрабатывало бы все остальное.
Здесь начинаются более крупные вопросы:
- Что касается COM-объектов, реестр запрашивается по CLSID, а не по имени файла ocx (то есть записи InProcServer32 в реестре Windows) или по (VersionIndependent) ProgID (HKLM \ Software \ Classes \ CLSID \ {} \ ).Знаете ли вы метод, т. Е. Пакетный / (PowerShell) скрипт / инструмент / какой-либо другой инструмент для запроса CLSID, связанных с файлом ocx или, по крайней мере, радикалом ProgID?
- Я понимаю, что CLSID является постоянным в Windows 2000до 7?
- SlayOCX.vbs представляется низкоуровневым подходом, который называется групповой политикой, как описано в SlayOCX.vbs и здесь, может работать как сетевое решение.Но: это VBS, выключенный в некоторых средах.Кроме того, я закончу с полным списком идентификаторов CLSID, которые будут проверяться этим сценарием.Обернутый, например, в пакет, я, вероятно, не смогу развернуть его администраторами клиентов описанным способом, а скорее с помощью сценария входа или ключа runonce в реестре или чего-то еще - не очень элегантно.Так что бы вы предложили?Я бы предпочел решение (инструмент, новую групповую политику в 7, которую я пока не знаю, более сложный сценарий с меньшей зависимостью от проблем конфигурации системы и безопасности, ...), который делает первые информационные вопросы излишними.