Почему 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 и плагины?", Отвечая "Да". Но контроль все еще не показывает себя. Контроль заблокирован.
- Я сталкиваюсь с несколькими похожими вопросами и ответами, но ни один из них не решает проблему блокировки. Например, как запретить Internet Explorer блокировать элементы управления ActiveX для локальных файлов
- Я сравнил настройки и политики IE между моим ноутбуком с Windows 10 и образом Windows 10, но безрезультатно.
У кого-нибудь есть идеи, что проверить на образе 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