August 2019 Updates: Ärger mit VB6, VBA und VBScript

[English]Zum August 2019 kappt Microsoft die VBScript-Unterstützung im Internet Explorer. Nun deuten sich Probleme mit den Windows-Sicherheitsupdates vom August 2019 in Verbindung mit Visual Basic (VB6, VBA und VBScript) an.

Manchmal liegen die Dinge in der Luft. Ich hatte in meinem Ordner für Blog-Themen schon einen Link auf meinen Blog-Post zum Ende der VBScript-Unterstützung im Internet Explorer auf Wiedervorlage gesetzt – einfach eine Erinnerung an Admins, falls es plötzlich zum August Patchday klemmt. Dann erreichte mich eine Mail von Blog-Leser Jan V. mit einem Hinweis auf Visual Basic-Probleme (danke dafür). Daher hier kurz sortiert, was man wissen sollte.

Internet Explorer kappt VBscript-Unterstützung

Ich hatte es Anfang August 2019 im Blog-Beitrag Microsoft deaktiviert ab August VBScript im Internet Explorer erwähnt. Zum Patchday, 13. August 2019, hat Microsoft die Unterstützung von VBscript im Internet Explorer für Windows 7, 8 und 8.1 für Webzonen abgekündigt.

Die Änderung zur Deaktivierung von VBScript wird in den kommenden kumulativen Updates für Windows 7, 8 und 8.1 am 13. August 2019 wirksam. VBScript wird standardmäßig für Internet Explorer 11 und WebOCs für Internet und nicht vertrauenswürdige Zonen auf allen Plattformen mit Internet Explorer 11 deaktiviert.

Für Windows 10 war dies bereits seit dem 9. Juli 2019 der Fall. Alles was unsichere Inhalte (Internetzone, WebOCs) betrifft, kann standardmäßig kein VBscript mehr im Browser ausführen.

Auch VBA, VB6, VBScript betroffen

Aber es scheint noch was beim August 2019-Patchday passiert zu sein. Denn es gibt einen größeren Impact durch die Updates. Blog-Leser Jan V. schrieb mir dazu:

der August Patchday birgt Potential für Probleme bei VB6, VBA, VBS basierten Anwendungen.

Jan verwies mich auf den Supportbeitrag für KB4512488 (Monthly Rollup für Windows 8.1/Server 2012 R2). Dort hat Microsoft seit der Erstveröffentlichung folgende Ergänzung vorgenommen:

After installing this update, applications that were made using Visual Basic 6 (VB6), macros using Visual Basic for Applications (VBA), and scripts or apps using Visual Basic Scripting Edition (VBScript) may stop responding and you may receive an „invalid procedure call§ error.

Microsoft is presently investigating this issue and will provide an update when available.

Nach der Installation kommt es also zu Problemen bei der Verwendung von Visual Basic 6 (VB6), von Makros mit Visual Basic for Applications (VBA), sowie Skripten oder Anwendungen, die Visual Basic Scripting Edition (VBScript) verwenden. Die Programme reagieren plötzlich nicht mehr und es gibt einen invalid procedure call-Fehler. Das betrifft aber nicht nur KB4512488 für Windows 8.1. Bei Jan waren XenApps betroffen.  Laut den ‘known issues’ in den KB-Beiträgen sind folgende Updates betroffen:

Es sind also faktisch alle Windows Versionen betroffen. Jan schrieb mir: Bei uns hat sich das derzeit bei zwei ivanti/RES Konsolen für den Automation Manager und den Workspace Manager bemerkbar gemacht. Was noch schlummert…? Bleibt die Frage: Sonst noch jemand von euch, der betroffen ist?

Ergänzung: Es gibt erste aktualisierte Updates, die das Problem beheben sollen, siehe Fix für VB6, VBA, VBScript-Problem.

Ähnliche Artikel:
Microsoft deaktiviert ab August VBScript im Internet Explorer
Januar-Update MS16-004 bricht MSComCTL.ocx
Office Update liefert falsche MSComCTL.ocx (Jan. 2019)
Neues zum MSComCTL.ocx-Problem bei Office-Updates

Dieser Beitrag wurde unter Office, Software, Update, Windows abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

25 Antworten zu August 2019 Updates: Ärger mit VB6, VBA und VBScript

  1. Micha45 sagt:

    „Nach der Installation kommt es also zu Problemen bei der Verwendung von […]“

    Wir arbeiten hier verstärkt mit Excel und vewenden den darin enthaltenen „VB-Editor“, über den wir Makros erstellen.
    Weder vor, noch nach den letzten Updates beklagen wir hier irgendwelche Probleme bei der Anwendung, auch das hier beschriebene Problem tritt hier nicht auf.

    […] „may stop responding“ […]

    Wenn ich das aus dem Supportbeitrag richtig übersetze, dann KANN es wohl zu dem genannten Problem kommen. Meiner Schlussfolgerung nach bedeutet das dann wohl, dass nicht zwangsläufig alle in den genannten Fehler laufen müssen.

    • theo sagt:

      Ich glaube Du musst hier zwischen VBA in Excel unterscheiden und externe Aufrufe von Programmen (Scripte usw.) die in VBA geschrieben wurden und nach einem Aufruf eigenständig laufen. Letztere werden vermutlich die o.g. Probleme haben. Excel als eigenständige Anwendung wird diese Problem nicht haben.

      • Micha45 sagt:

        Die in Excel mit dem VB-Editor erstellten Scripte werden intern im Dateiformat BAS, welches auch ein Visual Basic-Format ist, gespeichert.
        Bei uns werden die Scripte zum Teil auch exportiert, im Format BAS im Netzwerk abgelegt, stehen somit allen Mitarbeitern bei Bedarf zur Verfügung und werden von diesen nach Mausklick importiert und geladen.
        Dabei treten aktuell keinerlei Probleme auf, ansonsten wäre das von der Belegschaft bereits thematisiert worden.

        Aber vielleicht betrifft das Problem ja auch nur VB-Scripte mit bestimmten Dateiformaten. Davon gibt es ja nun eine ganze Reihe.

  2. Uwe sagt:

    Das Problem tritt bei der Zuweisung von Arrays zu VARIANT-Variablen auf. Dann stürzt das Programm mit Error 5 ab.
    Glücklicherweise funktionieren die Rechner nach der Deinstallation der betroffenen Patches wieder normal.
    Ohne den Patch bleiben aber unter anderem die RDP-Probleme erhalten. Diese Patches sind derzeit nicht einzeln erhältlich. Microsoft arbeitet dran, diese zur Verfügung zu stellen

  3. Robert Richter sagt:

    Also ein reines VB6 Programm läuft bei mir noch (Win 10 Enterprise 1903, 18362.295).
    Und ein VBScript (.vbs), welches eine .NET Dll von mir (mittels COM-Interface) called und die DLL dann von einem WebService Daten zieht und zurück an das VBS durchreicht, GEHT AUCH :-) !
    Vielleicht ist das bei mir was Besonderes, aber es geht alles ;-)

  4. Aktuell scheint es mir, dass nur Anwendungen betroffen sind, die ParamArrays (https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/modifiers/paramarray) in einer bestimmten Weise nutzen.
    Bei „meiner“ Software DMXControl 2 ist es nur eine Stelle die das nutzt, aber das reicht, damit sie nicht mehr richtig starten kann…

    • Peter sagt:

      Kannst du ein Beispiel zeigen, welches das Problem verursacht?

      • Tom sagt:

        If you pass an empty VARIANT into a function that takes a ParamArray (where you have code that is valid to pass empty or something in it) and then pass that empty VARIANT to another function, the second function gets an invalid argument. If you then try to use that, the VB6 application blows up. If you pass a non-empty ParamArray, it works fine.

        Back out the update and it goes back to working just fine.

  5. Gray sagt:

    We have about 600 Customer affected. We get a System.Runtime.InteropServices.COMException (0x800A0005): Invalid procedure call or argument errro when .NET trys to access a DLL with VB6 code.

  6. Jon sagt:

    For us, error 5 occurs in a VB6 program calling into a VB6 ActiveX DLL where the caller is passing Nothing into a function expecting a ByVal Variant. I can see the Nothing comes in as Empty, but then the error.

  7. Jon sagt:

    …I mention the ByVal and Nothing being reported as Empty because I had a suspicion that if ByRef it would be a different outcome. I’ve just checked and sure enough, at the entry point, hovering over the Variant that has just been passed Nothing by the caller, you get the tooltip message „invalid procedure call or argument“, however this time the code continues and in fact this routine works as expected and the program doesn’t have an error.

  8. Jon sagt:

    …I mention the ByVal and Nothing being reported as Empty because I had a suspicion that if ByRef it would be a different outcome. I’ve just checked and sure enough, at the entry point, hovering over the Variant that has just been passed Nothing by the caller, you get the tooltip message „invalid procedure call or argument“. However this time the code continues and in fact this routine works as expected and the program doesn’t have an error.

  9. Andreas sagt:

    Ich habe gerade in einer VM unter Windows 7 x64 SP1 (August-Updates installiert) ein VBScript (*.vbs) geschrieben, dass auf unterschiedliche Weisen erzeugte Arrays ByVal und ByRef an ein Unterprogramm übergibt – kein Problem.

    Das eine Array wurde mit

    Dim arrTest1(10)

    erzeugt und über eine Schleife mit Integer-Werten gefüllt.

    Das andere wurde mit

    arrTest2 = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    erzeugt und gefüllt.

  10. Frank Schüler sagt:

    Hier mein Workaround.

    Option Explicit

    Private Sub Command1_Click()

    Call FuncA

    End Sub

    Private Sub FuncA(ParamArray A())

    Dim v As Variant

    ‚ Funktionier noch an dieser stelle
    v = A

    ‚ löst Error 5 aus wenn das ParamArray
    ‚ nicht verwendet wird, leer ist
    ‚Call FuncB(A)

    ‚ Workaround
    If IsMissing(A) Then
    Call FuncB(Nothing)
    Else
    Call FuncB(A)
    End If

    End Sub

    Private Sub FuncB(ParamArray B())

    Dim v As Variant

    ‚ hier nicht mehr wenn nicht der
    ‚ Workaround eingesetzt wird
    v = B

    End Sub

  11. Hallo,

    wollte mal berichten das wir eine umfangreiche VB6-Anwendung vertreiben, auf ca. 150 Terminal-Servern mit 900 RDP-Useren von Win2003 bis 2019 alles dabei.
    Keine Probleme.
    VARIANT-Arrays haben wir nicht, und VARIANT-Variabeln nur für die DBGrid-Bookmarks.
    Die können m.E. gar nicht EMPTY or NOTHING sein.

    Ich wills ja nicht herbeischwören, aber bei uns läuft alles ….

  12. Sebastian Schüler sagt:

    Folgendes Beispiel zeit einige betroffene Use-Cases:

    Class1:
    Option Explicit

    Public Type MyType
    Prop1 As Integer
    End Type

    Sub Test()
    On Error Resume Next

    Dim Arr() As Object
    TestByRef Arr ‚Works before and after Windows Update
    TestByVal Arr ‚Fails after Windows Update

    Dim Arr2() As MyType
    TestByRef Arr2 ‚Works before and after Windows Update
    TestByVal Arr2 ‚Fails after Windows Update

    Dim Arr3() As Class1
    TestByRef Arr3 ‚Works before and after Windows Update
    TestByVal Arr3 ‚Fails after Windows Update

    Dim Arr4() As Variant
    TestByRef Arr4 ‚Works before and after Windows Update
    TestByVal Arr4 ‚Works before and after Windows Update

    Dim Arr5() As Integer
    TestByRef Arr5 ‚Works before and after Windows Update
    TestByVal Arr5 ‚Works before and after Windows Update
    End Sub

    Sub TestByRef(ByRef P As Variant)
    End Sub

    Sub TestByVal(ByVal P As Variant) ‚Error occurs on this line
    End Sub

    Hier sind auch einige weitere Beispiele zu finden:
    http://www.vbforums.com/showthread.php?877733-Windows-August-2019-Update-break-VB-arrays

    wie z.B.:
    Private Data() As Variant
    Private Sub Something()
    Data = Array() ‚Error 5 here!
    End Sub

  13. Danke für den Artikel und die Liste der betroffenen Updates!

    Wir haben unseren Kunden eine Batch-Datei mit folgendem Inhalt zur Verfügung gestellt, um das Update unabhängig von der Betriebssystem-Version zu deinstallieren:

    for %%i in (4512486, 4512506, 4512488, 4512489, 4512497, 4512517, 4512507, 4512516, 4512501, 4511553, 4512508) DO (
    wmic qfe get hotfixid | find „KB%%i“ && start „“ /b /wait wusa.exe /uninstall /kb:%%i
    )

    Anmerkung: Bei direkter Verwendung in der Kommandozeile (ohne Batch-Datei) ist %%i durch %i zu ersetzen (kommt 3x vor). Oh, und die typographischen Anführungszeichen, die die Blog-Kommentarsoftware automatisch erstellt hat, sind natürlich wieder auf reguläre zu ändern.

  14. Gray sagt:

    Thanks Everyone! We are also needing to remove the update as the legacy code in our DLL’s is not easily editable. We have done asbout 600 PC with the follwing script for Win 10

    @echo off
    echo „—————————————————————-“
    echo „—————————————————————-“
    echo „This will uninstall Update KB4512508, KB4511553, 4512501 and KB4512937 for Windows 10“
    echo „—————————————————————-“
    pause
    wusa /uninstall /norestart /kb:4512508
    wusa /uninstall /norestart /kb:4511553
    wusa /uninstall /norestart /kb:4512937
    wusa /uninstall /norestart /kb:4512501
    wusa /uninstall /norestart /kb:4507469
    sc stop wuauserv
    sc config wuauserv start= disabled
    echo „Uninstall Complete. Press any button to Reboot.“
    pause
    shutdown /f /r /t 05

    We have aked Microsoft for comment and any workarround before the release a patch. This site is the only source of help we have been getting!

  15. HP sagt:

    Wir haben hier noch ein Problem: „2019-08 Kumulatives Update für Windows Server 2016 für x64-basierte Systeme (KB4512517)“ erfordert offensichtlich an die 10 oder mehr GB freien Festplattenspeicher, um installiert werden zu können. Offensichtlich wird hier im ersten Schritte SEHR viel entpackt.
    Wir hatten schonmal Rekordwerte von 6-8 GB, aber dieses Update scheint alles zu toppen. Da wir die VMs mit ca. 20% Toleranz bei den VHDX ausstatten, bedeutet dies nun eine Vergrößerung sämtlicher virtuellen Festplatten für uns, um den Patchday abschließen zu können.

  16. Harald.L sagt:

    Diese Nacht hat mein WSUS einen Schwung Updates synchronisiert der anscheinend die VB-Probleme angehen soll: KB4517297 für Win7/2008R2 als Ersatz für KB4512486 plus VB6/VBA/VBS-Fixes, und KB4517298 genauso für Win8.1/2012R2.

    Die „Known Issues“ wie z.B. die Probleme mit Norton/Symantec stehen weiterhin drin.

  17. MaybeHelpful sagt:

    Falls es jemand brauchen kann (bezogen auf die Übersicht der den VB6/VBA/VBScript-Fehler mit leeren Arrays verursachenden Patches weiter oben):

    KB4512486, KB4512506 für Windows 7 sowie Windows Server 2008 R2
    => nach KB4517297 suchen und installieren (https://support.microsoft.com/en-us/help/4517297),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4517297

    KB4512488, KB4512489 für Windows 8.1 sowie Windows Server 2012 R2
    => nach KB4517298 suchen und installieren (https://support.microsoft.com/en-us/help/4517298),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4517298

    KB4512497 für Windows 10 (1507)
    => nach KB4517276 suchen und installieren (https://support.microsoft.com/en-us/help/4517276),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4517276

    KB4512517 für Windows 10 (1607) und Windows Server 2016
    => nach KB4512495 suchen und installieren (https://support.microsoft.com/en-us/help/4512495),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4512495

    KB4512507 für Windows 10 (1703)
    => nach KB4512474 suchen und installieren (https://support.microsoft.com/en-us/help/4512474),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4512474

    KB4512516 für Windows 10 (1709)
    => nach KB4512494 suchen und installieren (https://support.microsoft.com/en-us/help/4512494),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4512494

    KB4512501 für Windows 10 (1803)
    => nach KB4512509 suchen und installieren (https://support.microsoft.com/en-us/help/4512509),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4512509

    KB4511553 für Windows 10 (1809) und Windows Server 2019
    > nach KB4512534 suchen und installieren (https://support.microsoft.com/en-us/help/4512534),
    Download von http://www.catalog.update.microsoft.com/Search.aspx?q=KB4512534

    KB4512508 für Windows 10 (1903) und Windows Server 1903
    => noch nichts gefunden

    ist der Patch für 1903 noch nicht veröffentlicht?

  18. Ein Hinweis für Windows 10 1903: Das regelmäßige Deinstallieren und (automatische) Wieder-Installieren von KB4512508 scheint dem Start Menü gar nicht gut zu tun.

    Hintergrund: Auf 2 VBA-Entwickler-PCs mussten wir (da es für Windows 10 1903 noch keinen Patch gibt) KB451508 deinstallieren. Als sich später das Update über Windows Update wieder installiert hat, funktionierten die Jump Lists in der Task Bar nicht mehr. Die nochmalige Deinstallation des KB löst das Jump-List-Problem, danach war aber auf einem der PCs das Start Menü komplett unzugänglich („Critical Error – Your Start menu isn’t working. We’ll try to fix it the next time you sign in.“ – natürlich ist es nach dem neu Anmelden nicht behoben).

    Im Endeffekt half bei dem PC nur ein Restore Point, der glücklicherweise von vor ca. 1 Woche noch vorhanden war.

    Hoffentlich behebt der für Ende August angekündigte 1903-Patch dieses ganze Durcheinander…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert