1

A customer is upgrading the virtual Windows workstations (VDIs) from Windows 7 to Windows 10 x64. They are using an older application, a workflow product with web client, which runs in Internet Explorer and still uses the "Microsoft Data and Time Picker Control 6.0 (SP6)" (32bit ActiveX control).

The mscomct2.ocx has been copied to the C:\Windows\SysWOW64 directory and registered with "regsvr32 mscomct2.ocx".

The problem is that this control does not show itself in Internet Explorer (x86) on the new Windows 10 x64 image; in fact, the control shows a placeholder and is blocked (IE in In compatibility view).

IE with blocked control

Tools / Manage Add-ons does show the control name in the list. Double clicking the item shows "More information" in which a "Block count" of 17 shows and "Use count": 0.

"More information" about Microsoft Data and Time Picker Control 6.0 (SP6)

Okay, the control is somehow blocked. See below for more details on the test setup.

Now why not replace the control with an HTML native something, I hear you thinking? Well, Replacing the control would need to republish the workflow template and change all the workflow instances...

Okay, in an VM copy of the customer's Windows 10 image, this is the web page to try and get the picker control to show.

    <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>

On my own Windows 10 x64 laptop, when I copy the OCX to C:\Windows\SysWOW64, register it and open the exact same page in Internet Explorer, the control DOES show itself.

Now why is the Internet Explorer in the customer's Windows 10 image blocking this control? The page zone is Internet; in the Zone's custom security level, I have changed all "ActiveX controls and plug-ins" related items to:

  • if the item has "enable" and "disable" option, then I set "Enable"
  • If the item has "enable", "disable" and "prompt", then I set "Prompt"
  • "Allow ActiveX Filtering" is set to "Disable"
  • "Run antimalware software on ActiveX controls" is set to "Disable"

When I load the page in Internet Explorer, it asks "Do you want to allow sofware such as ActiveX controls and plug-ins to run?", answered with Yes. But the control still does NOT show itself. The control is blocked.

Anyone has ideas of things to check on the Win10 image or a solution?

Colleague Tim: I'm working with my esteemed colleague Victor on this issue. And one extra important finding is that this particular ActiveX control "mscomct2.ocx" is working perfectly in MS Office 365 (x86) (can be initiated thru 'Developer tab' --> 'Controls' section --> 'ActiveX Controls' --> 'More controls' --> 'Microsoft Data and Time Picker Control 6.0 (SP6)') on the same machine where it is blocked in IE x86. Strange right?

More Controls' selection screen in Office x86

Underlying VBA Reference

Control neatly running in Office x86

We've also enabled the VersionAuditLog for ActiveX components in IE, but it says that it is NOT blocking the control.

VersionAuditLog

Thanks for any suggestions on how to troubleshoot this any further, because we are kind of stuck here.

Edit Added colleague Tim's contribution.

  • If you control the HTML, try to add as first element in the <head> section: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE10">. Try also the ActiveX test (if it's still working). Is the website trusted? – harrymc Apr 27 '19 at 16:56
  • Thank you for your suggestions, @harrymc. We tried the meta header, but this didn't work. – Victor Vogelpoel Apr 28 '19 at 18:07
  • As for the zones, we tried internet, intranet and trusted zones, with default and modified settings, but none work. I'll try the IE browser against the activex page. – Victor Vogelpoel Apr 28 '19 at 18:15
  • Installed Visual Studio Community 2019 into the VM. After reboot, the control showed itself! Now what did Visual Studio install or configure to make the control work?? – Victor Vogelpoel Apr 29 '19 at 18:19
  • Mysterious are the ways of Windows. – harrymc Apr 29 '19 at 18:34
1

I'll answer my own question. After collaborating with a very focused conspirator and loads of elimination, we found the culprit: ActiveX licensing registry keys

It seems the next registry key enables the Date and Time picker in Internet Explorer:

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

How did we find it? I noticed earlier that when I install Visual Studio 2019 Community Edition with some workload ("ASP.Net and web development"), the control starts working. When I remove it, it stops working. After loads of trial and failure with selecting and deselecting individual VS components for installation, the Nuget package manager seemed to make the difference. Removing installed DLLs didn't do the trick; removing newly installed registry keys did.

For reference: more Microsoft Common controls ActiveX licence registry keys: https://github.com/yangshengcheng/bhm/blob/master/policy/msgforward/vb6controls.reg

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.