Windows Update dauerhaft deaktivieren

Update 07.02.2019

Heute habe ich den Artikel noch einmal grundlegend überarbeitet. Der nun beschriebene Weg funktioniert bei mir nun seit über einem Monat wieder einwandfrei und sorgt dafür, dass der Windows Update Dienst nicht einmal mehr unter Dienste aufgeführt wird.

Update 06.11.2018

Der hier beschriebene Weg funktioniert aktuell leider nicht mehr. Ich suche bei Gelegenheit nach einer neuen Möglichkeit und werde den Beitrag entsprechend aktualisieren.

——-

Direkt zur Lösung

Hintergrund

Microsoft hat es den Windows Nutzern einfach gemacht und kümmert sich dankenswerter Weise seit Windows 10 um die Aktualisierung seines PCs. Abgesehen von ein paar Ausnahmen funktioniert das Ganze auch weitestgehend gut. Es kommt zwar immer mal wieder zur Unzeit vor, dass ein Rechner ein gefühlt stundenlanges Update durchführt, dies ist aber alles noch zu verkraften.

Problematisch wird es nun allerdings auf Systemen, auf denen unter keinen Umständen Updates installiert werden dürfen. Ein Beispiel hierfür ist etwa die Windows 10 Enterprise LTSB 2016 Version mit aktiviertem Schreibfilter “Unified Write Filter (UWF)”.
Zur Erklärung: Ist dieser Schreibschutz aktiviert, werden sämtliche Änderungen am System in ein Overlay (wahlweise im RAM oder auf HDD) gespeicher. Bei jedem Neustart werden sämtliche Änderungen verworfen. Ist das Overlay jedoch voll, wird das System träge und friert irgendwann ein.

Während es in der LTSB 2015er Version noch so war, dass Windows Updates automatisch deaktiviert wurden sobald der UWF aktiviert wurde (sehr sinnvoll), ist dies ab der 2016er Version nicht mehr so. Dies hat zur Folge, dass man ein Gerät neu installiert, fertig konfiguriert, UWF aktiviert und nach ein paar Wochen versucht, das Gerät täglich Updates in Hülle und Fülle zu laden, so dass das Overlay binnen kürzester Zeit gefüllt ist.
Der gewiefte Systemadmin kommt recht schnell auf die Idee “Na dann deaktiviert man den Windows Update Dienst vor dem Aktivieren des UWF.”. Generell stimme ich dem natürlich absolut zu, nur leider hat hier Microsoft einen Riegel vorgeschoben und prüft regelmäßig, ob der Dienst aktiviert ist und schaltet ihn im Zweifel wieder ein.

Aktuelle Lösung (07.02.2019)

Im Vergleich zur vorherigen Lösung (siehe unterhalb) wird in der aktuellen Variante nicht mehr der Dienstpfad umgeschrieben, sondern einfach dafür gesorgt, dass das System (Windows selbst) keinen Zugriff mehr auf den entsprechenden Registrierungsschlüssel hat. Da dieser Weg vorsieht, dem System die Berechtigungen für den entsprechenden Registrierungsschlüssel zu entziehen, bin ich ganz guter Dinge, dass diese Lösung länger Bestand hat.

Vorgehen

Öffnet zunächst den Registrierungseditor (“Windows Taste + R” -> “regedit”).


Navigiert zu dem Schlüssel “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv” und öffnet mit einem Rechtsklick darauf die Berechtigungseinstellungen.


Wählt anschließend zuächst die Option “Erweitert” und ändert den Besitzer von “SYSTEM” auf euren Benutzer. Schließt anschließend alle offenen Dialoge und öffnet die Berechtigungseinstellungen von “wuauserv” erneut.


Setzt hier für alle Benutzer außer den “Administratoren”  die Berechtigung für “Vollzugriff” und “Lesen” auf “Verweigern”.


Nach einem anschließenden Neustart ist in der Diensteübersicht nichts mehr von Windows Update zu sehen.


Der Versuch ein Update anzustoßen, wird daraufhin mit dieser Fehlermeldung quittiert.


Um Windows Updates wieder durchführen zu können, genügt es, die vorgenommen Berechtigungsänderungen an der Registrierung wieder rückgängig zu machen.

 

 

bisherige Lösung

Lange Rede, kurzer Sinn:
Die einzige mir bekannte Option, Windows Updates dauerhaft und tatsächlich zu unterbinden, ist es, den Startaufruf des Windows Updates Dienstes so zu modifizieren, dass das Starten des Dienstes fehlschlägt.

Hierzu ist das Bearbeiten der Registrierung notwendig und wie immer gilt, das Bearbeiten der Registrierung erfolgt auf eigene Gefahr.

Manuell

  1. Öffnet hierzu den Registrierungseditor (“Windows Taste + R” -> “regedit”)
  2. Navigiert zu dem Schlüssel “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv”
  3. Öffne den Wert “ImagePath” und löscht den Inhalt
  4. Fertig

per Skript

Hier das Ganze auch noch zum Kopieren in eine Eingabeaufforderung oder Skriptdatei:

net stop wuauserv
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv /v ImagePath /t REG_EXPAND_SZ /d "" /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv /v FailureActions /t REG_BINARY /d 80510100000000000000000003000000140000000000000060ea000000000000000000000000000000000000 /f

Ergänzend wird hierin vorher noch versucht, den Updatedienst zu beenden und über den Wert “FailureActions” definiert, so dass im Fehlerfall nicht versucht wird den Dienst erneut zu starten.

Um den Windows Updates Dienst wiederherzustellen, kann übrigens folgende Zeile verwendet werden:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv /v ImagePath /t REG_EXPAND_SZ /d "%systemroot%\system32\svchost.exe -k netsvcs" /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv /v FailureActions /t REG_BINARY /d 80510100000000000000000003000000140000000100000060ea000000000000000000000000000000000000 /f

[collapse]

Posted in Windows Clients and tagged , , , , , , .
Tobias Wintrich

Tobias Wintrich

Fachinformatiker/Systemintegration
Bäcker aus Leidenschaft

21 Comments

  1. Hallo,
    funktioniert leider nicht oder nicht mehr.
    Ich habe das ganze mit einer Batchdatei als Admin ausgeführt.
    Die Batchdatei zum Deaktivieren hat auch den Eintrag in der Registry bei ImagePath entsprechend gelerrt. 3 Tage später musste ich nun feststellen, dass der Rechner anscheinend wieder neu gestartet wurde, und Updates ausgeführt wurden. Bei ImagePath in der Registry hat sich leider auch wieder “C:\WINDOWS\system32\svchost.exe -k netsvcs -p” eingetragen.
    PC 1:
    Windows 10 Pro 64bit
    Winver: 1803 (Build 17134.285)

    PC2:
    Windows 10 Pro 64bit
    Winver: 1803 (Build 17134.345)

    • Hallo Max,

      ich versuche das ganze nochmal nachzustellen. Zurzeit bin ich auf Windows 10 Pro 64 Bit Build 17134.345. Ich habe die Zeile gerade nochmal ausgeführt und meinen PC neu gestartet. Bisher hat der Schlüssel gehalten und der Windows Update Dienst lässt sich nicht mehr ausführen. Ich werde es die nächsten Tage noch beobachten ob sich der Schlüssel wieder zurücksetzt.

      Eventuell könntest du noch versuchen, nach setzten des Schlüssels direkt einen Neustart auszuführen. Ich könnte mir noch vorstellen, dass ein noch laufender Windows Updateprozess von Zeit zu Zeit eine Überprüfung seiner Parameter durchführt und dabei Schlüssel automatisch korrigiert. Durch einen direkten Neustart, sollte sich das unterbinden lassen.

      Tobias

  2. Hallo,
    leider muss ich Max zustimmen. Auch bei mir hat sich wohl nach einigen Tagen, ohne das ich es bemerkt habe, der Pfad wieder in die Registry eingeschrieben. Ich hatte nach setzen des Schlüssel einen Neustart ausgeführt.
    Sehe jetzt als einzigen Ausweg die Batchdatei in den Aufgabenplaner zu setzen und ein bis zwei mal pro Tag ausführen zu lassen.
    Wenn ich kein Touch Tablet hätte, hätte ich Win10 schon lang durch Win7 ersetzt.

    • Hallo Zusammen,

      ich habe gerade auch nochmal den Status meines Windows Update Dienstes überprüft und siehe da, er hat sich auf magische Weise ebenfalls wieder aktiviert. Dabei ist mir auch ein neuer Dienst ins Auge gefallen, den es vorher an dieser Stelle nicht gegeben hat. Der “Windows Update Medic Service” sorgt wohl dafür einen defekten Windows Update Dienst wieder zu reparieren.
      Bisher konnte ich Ihn aber auch noch nicht bei der Arbeit beobachten, wenn man den Update Dienst beschädigt und anschließend “Windows Update Medic Service” manuell startet so ändert sich erst einmal nichts.

      Ich versuche eine alternative Möglichkeit zu finden, bis dahin, markiere ich den Beitrag als nicht mehr funktionierend.

      Tobias

  3. Hallo,
    Also ich habe jetzt eine etwas unkonventionelle Lösung für das Problem gefunden. Diese funktioniert nun seit fast 3 Wochen einwandfrei.
    Ich habe mir den obigen “Update Ausschalt Script” in eine .bat Datei gelegt und in der Aufgabenplanung einen Task angelegt, der mir diese .bat Datei einmal pro Stunde automatisch ausführt wenn der Rechner an ist bzw. sofort wenn er hochgefahren wird.

    Ralf

  4. Hallo Ralf, in der Hoffnung das Deine Lösung noch funktioniert, würdest Du mir bitte Deine Lösung im Detail erläutern ? Bin nicht wirklich Profi in diesen Dingen und würde mich über Unterstützung freuen.
    Wie sieht konkret die .bat aus und wo muss die abgelegt werden ?
    Wie erstelle ich die Stündliche Aufgabe ?

    LG Dieter

  5. Ist es heutzutage so, das Microsoft ein besonderes Augenmerk darauf legt, welche Lösungen sich so manche User zurecht basteln, und Microsoft diese am Ende bewusst blockiert?

    Gibt es nach aktuellem Stand eigentlich für Microsoft auch die Möglichkeit (im System selbst) nachzuvollziehen (im Hintergrund) was der User im System alles anstellt und ändert?

    • Hallo Didi,

      vorweg gesagt, ich verteufele keine großen Firmen wie Microsoft, weil Sie uns Ihre aktuellen Updates aufzwingen möchten. Ich gehe sogar davon aus, dass es für über 95% aller Windows Nutzer absolut Sinnvoll ist Sicherheitsupdates automatisch aufs System übertragen zu bekommen. Generell halte ich es sogar für Ihr gutes Recht so vorzugehen, da auch niemand von uns gezwungen ist Ihre Produkte zu nutzen und wir Ihren Bedingungen bei jeder Installation zustimmen.

      Nun zur eigentlichen Frage. Ich habe keine gesicherten Belege, gehe aber davon aus, dass Microsoft es mitbekommt auf welche Art versucht wird, ein Update zu blockieren. Ich vermute, dass wenn Windows Update (oder ein beliebiger anderer Dienst) auf einem Gerät nicht gestartet werden kann, ein entsprechendes Fehlerprotokoll an Microsoft gesendet wird. Wenn es nun darin heißt, dass der Pfad zum Dienst nicht gefunden werden kann, wird im nächsten Windows Update (oder über die Magie des Windows Update Medic Dienstes) eine Funktion eingespielt werden, die genau auf diesen Fehler reagiert und Ihn behebt indem es den Pfad in der Registrierung neu setzt.
      Lustiger Weise hat man bei der Einrichtung eines aktuellen Windows Systems nicht mehr die Option zu wählen, dass keine Fehlerprotokolle an Microsoft übertragen werden, man hat nur die Auswahl zwischen einem kompletten und einem eingeschränkten Protokoll.

      Ich teste zurzeit ein modifiziertes Vorgehen der bisherigen Anleitung. Zusätzlich zum Überschreiben des Dienstpfades habe ich nun dem User “System” den Zugriff auf den Registrierungsschlüssel verweigert. Bisher hält das Vorgehen seit über 3 Tagen stand und der Windows Update Dienst wird nicht einmal mehr in der Dienstübersicht aufgeführt. Sollte es auch noch 2 weitere Wochen halten, würde ich meine Anleitung nochmal updaten.

      Tobias

        • Hallo,

          ja es hat nunmehr tatsächlich wieder seit 30 Tagen standgehalten und es wurden keine Anstalten mehr unternommen Updates zu installieren.

          Ich hab den Artikel gerade nochmal überarbeitet. Nach diesem Vorgehen sollte es auch bei dir wieder funktionieren.

          Tobias

  6. Hallo Tobias,
    war länger nicht mehr auf dieser Seite und habe heute die weitere Entwicklung des Beitrages gelesen.

    OK, wenn dieses Vorgehen so funktioniert, dann werde ich dies auch mal so versuchen. Obgleich das ständige Überschreiben der Registry prinzipiell bis heute funktioniert.
    Aber die Lösung, dem User “System” den Zugriff auf den Registrierungsschlüssel zu verweigern, ist natürlich der elegantere Weg.

    Danke für die Bemühungen.
    Ralf

  7. Hallo Tobias,

    habe nun die modifizierte Vorgehensweise getestet – und sie funktioniert prima 🙂

    Noch eine Frage……
    Ich hatte mir vor der Veränderung eine Sicherung des Wuauserv Schlüssels gemacht. Und ich wollte eine Sicherung nach der Veränderung machen. Letzteres geht mal nicht, weil da gar nichts mehr drin steht.
    Ziel wäre es, per Mausklick (+Neustart) den Update ein bzw. auszuschalten. Wenn ich aber den vorher gesicherten Wuauserv Schlüssel zurück spielen möchte, kommt der Fehler “…..verfüge nicht über genügend Rechte……”

    Gibt es keine Möglichkeit die zwei verschiedenen Schlüssel zu speichern und bei Bedarf einzupflegen? Oder muss ich die ganze Prozedur “Besitzer, Berechtigung….” immer “händisch” machen?

    Letztendlich wollen wir Updates ja nicht grundsätzlich verweigern, sondern nur selbst bestimmen welches Update und wann es stattfinden soll…..

    Ralf

    • Hallo Ralf,

      ich musste ein wenig tüfteln, denke aber eine Möglichkeit gefunden zu haben, die Berechtigung Vollzugriff für SYSTEM auf dem Schlüssel per PowerShell Script zu aktivieren und auch wieder zu verweigern.

      Diese Zeilen in einem PowerShell Script verbieten System dem Zugriff:
      $acl = Get-Acl HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv
      $rule = New-Object System.Security.AccessControl.RegistryAccessRule(“SYSTEM”,”FullControl”,@(“ObjectInherit”,”ContainerInherit”),”None”,”Allow”)
      $acl.RemoveAccessRuleAll($rule)
      $rule = New-Object System.Security.AccessControl.RegistryAccessRule(“SYSTEM”,”FullControl”,@(“ObjectInherit”,”ContainerInherit”),”None”,”Deny”)
      $acl.AddAccessRule($rule)
      $acl |Set-Acl HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv

      Im Gegenzug dazu erlauben diese Zeilen den Zugriff wieder:
      $acl = Get-Acl HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv
      $rule = New-Object System.Security.AccessControl.RegistryAccessRule(“SYSTEM”,”FullControl”,@(“ObjectInherit”,”ContainerInherit”),”None”,”Deny”)
      $acl.RemoveAccessRuleAll($rule)
      $rule = New-Object System.Security.AccessControl.RegistryAccessRule(“SYSTEM”,”FullControl”,@(“ObjectInherit”,”ContainerInherit”),”None”,”Allow”)
      $acl.AddAccessRule($rule)
      $acl |Set-Acl HKLM:\SYSTEM\CurrentControlSet\Services\wuauserv

      Eventuell könntest du die Zeilen bei dir kurz gegenprüfen und Bescheid geben ob es damit auch bei dir funktioniert. Sollte es bei dir klappen würde ich den Artikel noch um die Scriptzeilen ergänzen.

      Tobias

  8. Hallo Tobias,
    leider hat es nicht geklappt. (Win 10/32 1809)
    Das Script bringt folgende Fehlermeldung:

    PS C:\WINDOWS\System32> D:\Update-Ein.ps1
    Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
    In D:\Update-Ein.ps1:3 Zeichen:1
    + $acl.RemoveAccessRuleAll($rule)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
    In D:\Update-Ein.ps1:5 Zeichen:1
    + $acl.AddAccessRule($rule)
    + ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

  9. Nachtrag:
    Ich habe versucht den Schlüssel wuauserv in der Regestry händisch auf “system” wieder zurück zu setzen. Habe aber keinerlei Zugriff darauf. Als Besitzer ist da wohl jetzt gar niemand mehr eingetragen. Der Versuch jegwelchen Besitzer einzutragen wird mit “Besitzer kann nicht eingetragen werden” quittiert.

    Wenn ich Bilder hochladen könnte, würde ich dir zeigen wie der Schlüssel und seine Besitzer momentan aussehen. Ist eigentlich alles leer. Das Zurück spielen meiner Sicherung vom Schlüssel den ich vorher gemacht habe ist leider auch nicht möglich

    • Hallo Ralf,

      hast du regedit bzw. das Powershell Script mit der Option “als Administrator ausführen?” gestartet? Auch wenn dein eigener Nutzeraccount Administratorenberechtigungen hat, kann dieser Schritt erforderlich sein.

      Tobias

  10. Hallo Tobias,

    Danke, Danke, Danke:-)

    Die vorhergehende Lösung hatte sich jetzt nämlich leider auch in Luft aufgelöst (hatte immerhin einige Monate gehalten), und nach deiner neuen Beschreibung ist wieder alles suuupeerrr 😀

    LG Angelika

  11. Hallo Tobias,

    also es ist jetzt alles super. Das / die Script(s) funktionieren prima. Danke für die Hilfe.

    WICHTIG an alle:
    Nach jeder Ausführung des Scripts (Update einschalten / ausschalten) einen Neustart durchführen – vorher greift die Änderung nicht.

  12. Super geil, danke!!
    Mein PC musste immer 3-4 mal neu starten, bis ich mich anmelden konnte. Windows hat versucht Updates zu installieren, was jedes mal aufs Neue fehl schlug. Die Anleitung hat mir sehr geholfen!

  13. Hallo, habe seit spät Sommer 2018 die Version 1709 Build 16299.611 am laufen und mit den beschriebenen Möglichkeiten erfolgreich bis heute jedes Update verhindert. Leider killed jedes Update ab 1803 meinen Apache den ich unter Win10 seit Jahren am laufen habe.

  14. Mal schauen, ich habe es etwas anders probiert. “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc”, nur bei “Start” den Wert von 3 auf 4 geändert bewirkt, dass der Dienst auf Starttyp “Disable” gestellt wird. Um das System zu hindern ihn wieder zu aktivieren habe ich die Berechtigung bezüglich “Start” bearbeitet, die Vererbung in absolute Werte gewandelt, dem System die Berechtigungen entzogen und dem Administrator Vollzugriff gewährt. Ich hoffe es funktioniert auch so und dass ich nichts übersehen und mich selbst ausgesperrt habe ;-).

Schreibe einen Kommentar

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