Noch ein kleiner Nachtrag zum Januar 2016-Patchday. Das Update MS16-004 führt offenbar zu erheblichen Kompatibilitätsproblemen bei VB6- und VBA-Anwendungen.
Blog-Leser Axel H. hat mich Anfang Februar 2016 per Mail auf die Problematik hingewiesen.
Microsoft hat mit dem Update MS16-004 mal wieder Entwickler geärgert, da sie die Version des Typelibs der MsComCtl.ocx inkrementiert hat. Das bricht leider die Kompatibilität.
Ich kann nun nicht beurteilen, ob dies wirklich notwendig war, aber da keinerlei neue/geänderte Funktionalitäten seitens Microsoft kommuniziert werden, denke ich, es war (mal wieder!) unbeabsichtigt bzw. fälschlicher Weise so.
Leider gibt es aktuell nicht so viele Quellen, die darüber berichten, wie es noch beim MS12-060 der Fall war. Seitens Microsoft gibt es aktuell gar keine Äußerung. Mit deinem technischen Hintergrund und auch Kontakten könntest du doch mehr in Erfahrung bringen, oder? Über einen Artikel in deinem Blog würde ich mich sehr freuen.
Nun ja, meine “Kontakte” sind nicht so arg weit her und mit TypeLibs habe ich mich – gefühlt – so um 2003 zum letzten Mal befasst. TypeLibs enthalten Beschreibungen für COM-Objekte, die aus .ocx-Dateien in Visual Basic genutzt werden können. Eine Übersicht findet sich hier, hier und hier.
Problem ist, dass bei Änderungen an den Versionsnummern der TypeLibs alle Visual Basic- und VBA-Anwendungen nicht mehr laufen, die diese TypeLibs verwenden. In der Vergangenheit hat es Microsoft immer wieder geschafft, durch solche Updates Office-Add-Ins oder VB-Programme aufs Kreuz zu legen (siehe z.B. diesen Fall aus 2012). Das Sicherheits-Update MS16-004 für Office ist z.B. unter KB3039794 (Office 2013) und KB3096896 (Visual Basic) von Microsoft beschrieben worden. Dort wird erwähnt, dass das Sicherheitsupdate die Remotecodeausführung in „Comctl32.ocx‟ und „Mscomctl.ocx‟ verhindern soll. Im Rahmen dieser Revision hat man wohl die Versionsnummer der TypeLib geändert.
Geht man auf die Suche nach “MS16-004 , MSComCTL.ocx”, trifft man auf Fundstellen, dass das Update MS16-00 vom 12. Januar 2016 zu Problemen führt.
MS16-004 replaces mscomctl.ocx and causes incompatibility errors in Treeview
Solution for the list view issue with MS16-004 (January 2016 PU) for SharePoint 2013
Office Security Update KB2881029, KB2920727 bzw. KB3039794 verursacht Fehler
KB 2881029, 3039794, 2920727 throw spurious VBA, ‚Office Automation‘ errors
MSComCTL.ocx broken in Microsoft Security Update KB3039794 or KB2920727 or KB2881029 January 12, 2016
Hier gibt es einen KB-Artikel vom 12. Februar 2016, in dem Microsoft auf das Problem der nicht mehr funktionierenden Access-Anwendungen bei Sicherheitsupdates MS16-04 eingeht:
Security Update MS16-004 Impairs Functionality of Access Database
Es wird vorgeschlagen, die Registerungseinträge für die TypeLib zu löschen und dann die .ocx-Datei neu zu registrieren. Ist im Grunde auch die Vorgehensweise, die hier adressiert ist. An diese Fummelei, die wohl nicht immer hilft, wird man sich gewöhnen müssen, da das Ganze .ocx-/COM-Geraffel eigentlich nur noch als Altlast mitgeschleppt wird.
Irgend jemand von euch betroffen? Weitere sachdienliche Hinweise werden gerne als Kommentar entgegen genommen. Vielleicht hilft es dem einen oder anderen Betroffenen.
Kann ich irgendwie nachträglich herausfinden, wie eine neuere Version der mscomctl.ocx auf einen Rechner kam (vorausgesetzt, sie wurde mit dem Windows Installer hinzugefügt)?
Ich habe hier einen Windows 10 1511 x64 Rechner, relativ frisch aufgesetzt, mit SQL Server 2014 Express x64 SP1 und Office 2016 x86.
Komplett aktuell mit WSUS gepatched.
Das Update KB2920727 ist im WSUS geblockt und somit nicht drauf (wird auch nicht in den installierten Updates angezeigt).
Komischerweise wird überhaupt kein Office 2016 Patch/Update angezeigt…!?!
Ok, nun ist klar, dass es wohl durch Office 2016 drauf gekommen ist.
Denn das ist leider die C2R (Click-to-Run) Version, welche wir durch das Microsoft Action Pack erhalten haben.
Diese C2R-Version führt sich einfach automatisch alle verfügbaren Updates zu Gemüte und lässt sich leider gar nicht vom WSUS aus parametrisieren.
Auch bekomme ich die installierten Updates nicht angezeigt.
Es soll wohl auch eine Setup/MSI-Version geben, welche wie gewohnt mit dem Windows Installer installiert, die installierten Updates auch anzeigt und auch den WSUS berücksichtigt, nur sehe ich bisher keine Chance da dran zu kommen.
Hat hierzu jemand evtl. einen Tipp?
Also wenn mich jetzt nicht alles täuscht beginnt die OCX-Tragödie schon wieder.
Ich habe gerade auf einer VM mit Windows 10 Pro x64 das Office 2019 Pro installiert.
Danach meine Access-Applikation, in der die „Microsoft Common Controls Update (SP6) „verwendet werden.
Alles lief bestens.
Danach habe ich via Word unter Konto die Office-Updates gestartet und installiert.
Danach meine Access-Applikation wieder gestartet und oh Schreck die Listviews wurden nicht mehr korrekt angezeigt – also MSCOMCTL.OCX offensichtlich durch die Updates wieder demoliert.
Ein Blick in das Verzeichnis „C:\Program Files (x86)\Microsoft Office\root\vfs\SystemX86“ bestätigt meinen Verdacht.
Da liegt neu die Datei (MSCOMCTL.OCX) mit Version 7.0.52.6282 und Änderungsdatum 12.11.2018.
Ganz offensichtlich hat bei MS wieder so ein Irrer die falsche Versionsnummer ausgeliefert.
Es ist einfach zum heulen. Ich hasse das wirklich.
Gottlob habe ich von der Version 6.1.98.46 eine Sicherungskopie parat. Die habe ich dann in das Verzeichnis „C:\Program Files (x86)\Microsoft Office\root\vfs\SystemX86“ kopiert und meine Access-Applikation funktioniert wieder … ohne OCX Neuregistrierung via Konsole.
Welches Update den Schaden verursacht konnte ich nicht herausfinden. Bei meiner Office 2019 Pro werden die Updates im Windows Update leider nicht angezeigt und im Word unter Konto „Update Verlauf“ finde ich keine brauchbaren Informationen.
RoyScan.vbs geht leider nur bis Office 365. Eine neue Version die Office 2019 einschliesst habe ich im Web nicht gefunden (gibt’s wohl noch gar nicht).
Übrigens: MSCOMCT2.OCX ist nicht betroffen. Die haben sie offensichtlich in Ruhe gelassen.