Компоненты mscomctl.ocx, mscomct2.ocx, mswinsck.ocx: отключить Kill-Bit программно - PullRequest
0 голосов
/ 03 февраля 2011

В 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, которую я пока не знаю, более сложный сценарий с меньшей зависимостью от проблем конфигурации системы и безопасности, ...), который делает первые информационные вопросы излишними.

Ответы [ 3 ]

0 голосов
/ 08 февраля 2011

Сканер реестра CLSID (COM / ActiveX)

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

0 голосов
/ 19 февраля 2011

За исключением кода замены Treeview или вызовов API можно найти для большинства случаев использования этих OCX.По-видимому, был некоторый закомментированный на немецком языке API-код, который можно было купить много лет назад для просмотра дерева.Все эти OCX в любом случае являются оболочкой для вызовов API.

См. Страницу Советы по календарю на моем веб-сайте

mswinsck немного сложнее, и я неесть URL для этого.Однако я уверен, что есть код VB6, который будет очень хорошо работать в VBA.

Публикация в блоге - В старой версии MSCOMM32.OCX был установлен флаг "kill bit". Хотя вы не упоминаете об этом.

0 голосов
/ 03 февраля 2011

Вы хотите сознательно подвергать своих клиентов уязвимостям безопасности? Я не юрист, но ...

Согласно этой записи , упомянутые файлы "Поддерживаемые файлы времени выполнения для распространения с вашим приложением", вам просто нужно обновить до последней версии.

В другом посте подробно описаны необходимые шаги (возможно, для более раннего обновления, но все же оно должно помочь вам начать работу): Clickety

...