[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:
- KB4512486, KB4512506 für Windows 7 sowie Windows Server 2008 R2
- KB4512488, KB4512489 für Windows 8.1 sowie Windows Server 2012 R2
- KB4512497 für Windows 10 (1507)
- KB4512517 für Windows 10 (1607) und Windows Server 2016
- KB4512507 für Windows 10 (1703)
- KB4512516 für Windows 10 (1709)
- KB4512501 für Windows 10 (1803)
- KB4511553 für Windows 10 (1809) und Windows Server 2019
- KB4512508 für Windows 10 (1903) und Windows Server 1903
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
„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.
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.
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.
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
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 ;-)
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…
Kannst du ein Beispiel zeigen, welches das Problem verursacht?
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.
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.
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.
…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.
…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.
Ich hatte schon mit Windows 10 1903 im Gegensatz zu Windows 10 1809 Probleme mit einer Anwendung.
https://social.technet.microsoft.com/Forums/de-DE/b3021622-be93-4769-8d00-b488ae60857d/seit-windows-10-1903-funktion-altes-programm-mit-eingebautem-visual-basic-nicht-mehr?forum=win10itprogeneralDE
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.
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
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 ….
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
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.
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!
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.
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.
Fix @ https://support.microsoft.com/en-us/help/4517297/windows-7-update-kb4517297
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?
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…
evtl. kannst du damit erstmal die automatische Wiederinstallation unterbinden:
https://support.microsoft.com/en-us/help/3183922/how-to-temporarily-prevent-a-windows-update-from-reinstalling-in-windo
der Link endet tatasächlich nach windo