Почему Internet Explorer 11 на определенном образе Windows 10 блокирует элемент управления ActiveX "Microsoft Data and Time Picker Control 6.0 (SP6)"?

Заказчик обновляет виртуальные рабочие станции Windows (VDI) с Windows 7 до Windows 10 x64. Они используют старое приложение, продукт рабочего процесса с веб-клиентом, который работает в Internet Explorer и все еще использует "Microsoft Data and Time Picker Control 6.0 (SP6)" (32-битный элемент управления ActiveX).

Файл mscomct2.ocx был скопирован в каталог C:\Windows\SysWOW64 и зарегистрирован как "regsvr32 mscomct2.ocx".

Проблема заключается в том, что этот элемент управления не отображается в Internet Explorer (x86) на новом образе Windows 10 x64; на самом деле, элемент управления показывает заполнитель и заблокирован (IE в режиме совместимости).

Инструменты / Управление надстройками показывает имя элемента управления в списке. При двойном щелчке по элементу отображается "Дополнительная информация", в которой отображается "Количество блоков" из 17 и "Количество использованных": 0.

Хорошо, контроль как-то заблокирован. Ниже приведена более подробная информация о настройке теста.

Теперь, почему бы вам не заменить элемент управления чем-то родным HTML, я слышал, вы думаете? Что ж, для замены элемента управления потребуется повторно опубликовать шаблон рабочего процесса и изменить все экземпляры рабочего процесса...

Хорошо, в копии виртуальной машины образа Windows 10 клиента это веб-страница, на которой нужно показать элемент управления средства выбора.

    <html>
    <head>
    <title>DTPicker_Test</title>
    </head>
    <body bgcolor="#FFFFFF">
    function DocWrite(strHTML)
    {
    document.write(strHTML);
    }
    </script>

    <b>clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1</b>

    <script language="javascript">
    DocWrite("<object   classid=\"clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1\"  name=\"DTPicker\"   ID=\"DTPicker\" tabindex=\"1\"  accesskey=\"\"  mayscript=\"true\"  onload=\"DTPicker_InitProps()\" style=\"        position:absolute;      left:10;        top:100;        width:300;      height:100;     z-index:0;      color:#000000;      font-family:Arial;      font-style:normal;      font-weight:bold;       font-size:10pt; \"> <param name=\"MousePointer\" value=\"0\">   <param name=\"Enabled\" value=\"1\">    <param name=\"OLEDropMode\" value=\"0\">    <param name=\"CalendarBackColor\" value=\"-2147483643\">    <param name=\"CalendarForeColor\" value=\"-2147483630\">    <param name=\"CalendarTitleBackColor\" value=\"-2147483633\">   <param name=\"CalendarTitleForeColor\" value=\"-2147483630\">   <param name=\"CalendarTrailingForeColor\" value=\"-2147483631\">    <param name=\"CheckBox\" value=\"0\">   <param name=\"CustomFormat\" value=\"\">    <param name=\"Format\" value=\"1\"> <param name=\"UpDown\" value=\"0\"> <param name=\"MaxDate\" value=\"2958465\">  <param name=\"MinDate\" value=\"41640\"></object>");
    </script>

    <script language="javascript">
    function DTPicker_InitProps()
    {
    alert("init");
    }
    </script>

    </body>
    </html>

На моем собственном ноутбуке с Windows 10 x64, когда я копирую OCX в C:\Windows\SysWOW64, регистрирую его и открываю ту же самую страницу в Internet Explorer, элемент управления показывает себя.

Теперь, почему Internet Explorer в образе клиента Windows 10 блокирует этот элемент управления? Зона страницы - Интернет; в пользовательском уровне безопасности Zone я изменил все элементы, связанные с элементами управления ActiveX и подключаемыми модулями, на:

  • если у пункта есть опции "включить" и "отключить", то я устанавливаю "включить"
  • Если пункт имеет "включить", "отключить" и "запросить", то я установил "Запрос"
  • "Разрешить фильтрацию ActiveX" установлен на "Отключить"
  • "Запустить антивирусное ПО на элементах управления ActiveX" установлено на "Отключить"

Когда я загружаю страницу в Internet Explorer, он спрашивает "Хотите ли вы запустить программное обеспечение, такое как элементы управления ActiveX и плагины?", Отвечая "Да". Но контроль все еще не показывает себя. Контроль заблокирован.

У кого-нибудь есть идеи, что проверить на образе Win10 или решение?

Коллега Тим: Я работаю с моим уважаемым коллегой Виктором над этим вопросом. И еще один важный вывод заключается в том, что этот конкретный элемент управления ActiveX "mscomct2.ocx" отлично работает в MS Office 365 (x86) (его можно запустить через вкладку "Разработчик" -> раздел "Элементы управления" -> "Элементы управления ActiveX" --> "Дополнительные элементы управления" -> "Microsoft Data and Time Picker Control 6.0 (SP6)") на том же компьютере, где он заблокирован в IE x86. Странно, верно?

Мы также включили VersionAuditLog для компонентов ActiveX в IE, но он говорит, что он НЕ блокирует элемент управления.

Спасибо за любые предложения о том, как решить эту проблему, потому что мы застряли здесь.

Редактировать Добавлен вклад коллеги Тима.

1 ответ

Я отвечу на свой вопрос. После сотрудничества с очень целенаправленным заговорщиком и множеством исключений мы нашли виновника: ключи реестра для лицензирования ActiveX

Кажется, следующий раздел реестра включает средство выбора даты и времени в Internet Explorer:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Licenses \ 4F86BADF-9F77-11d1-B1B7-0000F8753F5D] "" = "iplpwpnippopupiivjrioppisjsjlpiiokuj"

Как мы нашли это? Ранее я заметил, что когда я устанавливаю Visual Studio 2019 Community Edition с некоторой рабочей нагрузкой ("ASP.Net и веб-разработка"), элемент управления начинает работать. Когда я удаляю его, он перестает работать. После множества проб и неудачных попыток выбора и отмены выбора отдельных компонентов VS для установки менеджер пакетов Nuget, похоже, изменился. Удаление установленных DLL не сработало; удаление недавно установленных ключей реестра сделал.

Для справки: дополнительные элементы реестра лицензий ActiveX для Microsoft Common: https://github.com/yangshengcheng/bhm/blob/master/policy/msgforward/vb6controls.reg

Другие вопросы по тегам