Windows-Update Batch-Datei enthält Fehler?
Hallo,
Ich habe eine Batch Datei geschrieben (zum teil übernommen von einer Vorlage aus dem Internet) die Windows-Update-Fehler beheben soll.
Die Batch Datei läuft zwar durch aber an manchen punkten kommt "Zugriff verweigert".
Ich habe die Batch-Datei natürlich mit Admin Rechten gestartet.
In dem Abschnitt, indem Systemdateien gelöscht und/oder umbenannt werden ploppt "Zugriff verweigert" auf. Es scheint aber, dass der Prozess weitergeht und funktioniert.
Es ist nicht ersichtlich an welchem Punkt der Zugriff verweigert wird.
Habt ihr eine Idee?
In dem Abschnitt "Set the startup type as automatic" erscheint auch "Zugriff verweigert".
Zudem können die angegebenen Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
Hier die Batch Datei:
echo Achtung, das Script muss als Administrator ausgeführt werden.
echo.
set /p EINGABE=Wollen Sie fortfahren oder abbrechen? [j oder n]
echo.
if not %EINGABE% == j goto ende
:start
ECHO.
ECHO.
ECHO *
ECHO Windows-Update Funktion wird repariert...
ECHO *
net stop wuauserv
net stop appidsvc
net stop cryptSvc
net stop bits
net stop msiserver
pause
del /s /q /f "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
del /s /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*.dat"
if exist "%SYSTEMROOT%\winsxs\pending.xml.bak" (
del /s /q /f "%SYSTEMROOT%\winsxs\pending.xml.bak"
)
if exist "%SYSTEMROOT%\SoftwareDistribution.bak" (
rmdir /s /q "%SYSTEMROOT%\SoftwareDistribution.bak"
)
if exist "%SYSTEMROOT%\system32\Catroot2.bak" (
rmdir /s /q "%SYSTEMROOT%\system32\Catroot2.bak"
)
if exist "%SYSTEMROOT%\WindowsUpdate.log.bak" (
del /s /q /f "%SYSTEMROOT%\WindowsUpdate.log.bak"
)
if exist "%SYSTEMROOT%\winsxs\pending.xml" (
takeown /f "%SYSTEMROOT%\winsxs\pending.xml"
attrib -r -s -h /s /d "%SYSTEMROOT%\winsxs\pending.xml"
ren "%SYSTEMROOT%\winsxs\pending.xml" pending.xml.bak
)
if exist "%SYSTEMROOT%\SoftwareDistribution" (
attrib -r -s -h /s /d "%SYSTEMROOT%\SoftwareDistribution"
ren "%SYSTEMROOT%\SoftwareDistribution" SoftwareDistribution.bak
)
if exist "%SYSTEMROOT%\system32\Catroot2" (
attrib -r -s -h /s /d "%SYSTEMROOT%\system32\Catroot2"
ren "%SYSTEMROOT%\system32\Catroot2" Catroot2.bak
)
if exist "%SYSTEMROOT%\WindowsUpdate.log" (
attrib -r -s -h /s /d "%SYSTEMROOT%\WindowsUpdate.log"
ren "%SYSTEMROOT%\WindowsUpdate.log" WindowsUpdate.log.bak
)
pause
echo :: ----- Reset the BITS service and the Windows Update service to the default security descriptor -----
sc.exe sdset bits DA;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv DA;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
pause
echo :: ----- Reregister the BITS files and the Windows Update files -----
cd /d %WINDIR%\system32
regsvr32.exe /s atl.dll
regsvr32.exe /s urlmon.dll
regsvr32.exe /s mshtml.dll
regsvr32.exe /s shdocvw.dll
regsvr32.exe /s browseui.dll
regsvr32.exe /s jscript.dll
regsvr32.exe /s vbscript.dll
regsvr32.exe /s scrrun.dll
regsvr32.exe /s msxml.dll
regsvr32.exe /s msxml3.dll
regsvr32.exe /s msxml6.dll
regsvr32.exe /s actxprxy.dll
regsvr32.exe /s softpub.dll
regsvr32.exe /s wintrust.dll
regsvr32.exe /s dssenh.dll
regsvr32.exe /s rsaenh.dll
regsvr32.exe /s gpkcsp.dll
regsvr32.exe /s sccbase.dll
regsvr32.exe /s slbcsp.dll
regsvr32.exe /s cryptdlg.dll
regsvr32.exe /s oleaut32.dll
regsvr32.exe /s ole32.dll
regsvr32.exe /s shell32.dll
regsvr32.exe /s initpki.dll
regsvr32.exe /s wuapi.dll
regsvr32.exe /s wuaueng.dll
regsvr32.exe /s wuaueng1.dll
regsvr32.exe /s wucltui.dll
regsvr32.exe /s wups.dll
regsvr32.exe /s wups2.dll
regsvr32.exe /s wuweb.dll
regsvr32.exe /s qmgr.dll
regsvr32.exe /s qmgrprxy.dll
regsvr32.exe /s wucltux.dll
regsvr32.exe /s muweb.dll
regsvr32.exe /s wuwebv.dll
pause
echo :: ----- Resetting Winsock -----
netsh winsock reset
pause
echo :: ----- Resetting WinHTTP Proxy -----
netsh winhttp reset proxy
pause
echo :: ----- Set the startup type as automatic -----
sc config wuauserv start= auto
sc config bits start= auto
sc config DcomLaunch start= auto
reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v LastWaitTimeout /f
reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v DetectionStartTime /f
reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v NextDetectionTime /f
pause
echo :: ----- Starting the Windows Update services -----
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc
net start DcomLaunch
net start msiserver
pause
start ms-settings:windowsupdate
echo.
echo.
:ende
echo Fertig.
pause
Ich habe eine Batch Datei geschrieben (zum teil übernommen von einer Vorlage aus dem Internet) die Windows-Update-Fehler beheben soll.
Die Batch Datei läuft zwar durch aber an manchen punkten kommt "Zugriff verweigert".
Ich habe die Batch-Datei natürlich mit Admin Rechten gestartet.
In dem Abschnitt, indem Systemdateien gelöscht und/oder umbenannt werden ploppt "Zugriff verweigert" auf. Es scheint aber, dass der Prozess weitergeht und funktioniert.
Es ist nicht ersichtlich an welchem Punkt der Zugriff verweigert wird.
Habt ihr eine Idee?
In dem Abschnitt "Set the startup type as automatic" erscheint auch "Zugriff verweigert".
Zudem können die angegebenen Registrierungsschlüssel bzw. Wert wurde nicht gefunden.
Hier die Batch Datei:
echo Achtung, das Script muss als Administrator ausgeführt werden.
echo.
set /p EINGABE=Wollen Sie fortfahren oder abbrechen? [j oder n]
echo.
if not %EINGABE% == j goto ende
:start
ECHO.
ECHO.
ECHO *
ECHO Windows-Update Funktion wird repariert...
ECHO *
net stop wuauserv
net stop appidsvc
net stop cryptSvc
net stop bits
net stop msiserver
pause
del /s /q /f "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
del /s /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*.dat"
if exist "%SYSTEMROOT%\winsxs\pending.xml.bak" (
del /s /q /f "%SYSTEMROOT%\winsxs\pending.xml.bak"
)
if exist "%SYSTEMROOT%\SoftwareDistribution.bak" (
rmdir /s /q "%SYSTEMROOT%\SoftwareDistribution.bak"
)
if exist "%SYSTEMROOT%\system32\Catroot2.bak" (
rmdir /s /q "%SYSTEMROOT%\system32\Catroot2.bak"
)
if exist "%SYSTEMROOT%\WindowsUpdate.log.bak" (
del /s /q /f "%SYSTEMROOT%\WindowsUpdate.log.bak"
)
if exist "%SYSTEMROOT%\winsxs\pending.xml" (
takeown /f "%SYSTEMROOT%\winsxs\pending.xml"
attrib -r -s -h /s /d "%SYSTEMROOT%\winsxs\pending.xml"
ren "%SYSTEMROOT%\winsxs\pending.xml" pending.xml.bak
)
if exist "%SYSTEMROOT%\SoftwareDistribution" (
attrib -r -s -h /s /d "%SYSTEMROOT%\SoftwareDistribution"
ren "%SYSTEMROOT%\SoftwareDistribution" SoftwareDistribution.bak
)
if exist "%SYSTEMROOT%\system32\Catroot2" (
attrib -r -s -h /s /d "%SYSTEMROOT%\system32\Catroot2"
ren "%SYSTEMROOT%\system32\Catroot2" Catroot2.bak
)
if exist "%SYSTEMROOT%\WindowsUpdate.log" (
attrib -r -s -h /s /d "%SYSTEMROOT%\WindowsUpdate.log"
ren "%SYSTEMROOT%\WindowsUpdate.log" WindowsUpdate.log.bak
)
pause
echo :: ----- Reset the BITS service and the Windows Update service to the default security descriptor -----
sc.exe sdset bits DA;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv DA;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
pause
echo :: ----- Reregister the BITS files and the Windows Update files -----
cd /d %WINDIR%\system32
regsvr32.exe /s atl.dll
regsvr32.exe /s urlmon.dll
regsvr32.exe /s mshtml.dll
regsvr32.exe /s shdocvw.dll
regsvr32.exe /s browseui.dll
regsvr32.exe /s jscript.dll
regsvr32.exe /s vbscript.dll
regsvr32.exe /s scrrun.dll
regsvr32.exe /s msxml.dll
regsvr32.exe /s msxml3.dll
regsvr32.exe /s msxml6.dll
regsvr32.exe /s actxprxy.dll
regsvr32.exe /s softpub.dll
regsvr32.exe /s wintrust.dll
regsvr32.exe /s dssenh.dll
regsvr32.exe /s rsaenh.dll
regsvr32.exe /s gpkcsp.dll
regsvr32.exe /s sccbase.dll
regsvr32.exe /s slbcsp.dll
regsvr32.exe /s cryptdlg.dll
regsvr32.exe /s oleaut32.dll
regsvr32.exe /s ole32.dll
regsvr32.exe /s shell32.dll
regsvr32.exe /s initpki.dll
regsvr32.exe /s wuapi.dll
regsvr32.exe /s wuaueng.dll
regsvr32.exe /s wuaueng1.dll
regsvr32.exe /s wucltui.dll
regsvr32.exe /s wups.dll
regsvr32.exe /s wups2.dll
regsvr32.exe /s wuweb.dll
regsvr32.exe /s qmgr.dll
regsvr32.exe /s qmgrprxy.dll
regsvr32.exe /s wucltux.dll
regsvr32.exe /s muweb.dll
regsvr32.exe /s wuwebv.dll
pause
echo :: ----- Resetting Winsock -----
netsh winsock reset
pause
echo :: ----- Resetting WinHTTP Proxy -----
netsh winhttp reset proxy
pause
echo :: ----- Set the startup type as automatic -----
sc config wuauserv start= auto
sc config bits start= auto
sc config DcomLaunch start= auto
reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v LastWaitTimeout /f
reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v DetectionStartTime /f
reg delete "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v NextDetectionTime /f
pause
echo :: ----- Starting the Windows Update services -----
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc
net start DcomLaunch
net start msiserver
pause
start ms-settings:windowsupdate
echo.
echo.
:ende
echo Fertig.
pause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665252
Url: https://administrator.de/contentid/665252
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo,
Die Dienste in umgekehrter Reihenfolge starten wie sie gestoppt wurden (Abhängigkeiten)
Manchmal starten Dienst wie der Cryptoservice auch von selbst neu. Ein zusätzlicher Check kann nicht schaden
DCOM-Service würde ich nicht anfassen.
Die Reg-Keys gibt es zu mindestens auf meinem System 20H2 auch nicht
Ansonsten zum Auffinden der Fehlerstellen ein paar Pausen mehr einbauen
gruss
Die Dienste in umgekehrter Reihenfolge starten wie sie gestoppt wurden (Abhängigkeiten)
Manchmal starten Dienst wie der Cryptoservice auch von selbst neu. Ein zusätzlicher Check kann nicht schaden
DCOM-Service würde ich nicht anfassen.
Die Reg-Keys gibt es zu mindestens auf meinem System 20H2 auch nicht
Ansonsten zum Auffinden der Fehlerstellen ein paar Pausen mehr einbauen
gruss