I had similar problems and the following is what I eventually did to get things up and running properly. But, as needed, I must say: "I cannot be held responsible for any repairs, suggestions, and any other do-it-yourself fixes. I am only saying this worked
on about 21 computers that had this problem. You are on your own after this.
FOR Windows XP and Windows 7 only. I have not tried this on Windows 8 yet
The update files may have become corrupted.
1. Log in with administrator privileges
- Open a command (cmd.exe) window
3. Type or copy and paste in the cmd screen:
net stop wuauserv
net stop bits
4. Open Windows explorer and drill down to C:\windows\softwaredistribution
5. Right click on the softwaredistribution folder and rename it to softwaredistributionOLD
6. Find windowsupdate.log (C:\Window) and right click on rename this file WindowsUpdate_OLD.log
7. Go back to the command window and type or cut and paste:
net start wuauserv
net start bits (this will rebuild the Windows file and folder you just renamed)
8. Finally, type or cut and paste:
wuauclt.exe /resetauthorization /detectnow
wuauclt.exe /reportnow /detectnow
If the above works for you, as it did for me, then hurray! If not then repeat step 3, reverse the renaming, and repeat step 7. Note - you will have to delete the new softwaredistribution before renaming the OLD folder back to SoftwareDistribution.
OR
Copy the following to a Note Pad and name it WindowsUpdateFix.bat and run that file:
ECHO off
CLS
REM This prorgam will clear the Windows Update files and folders from the %windrive%\SoftwareDistribution
REM directory. Then it will clean the registry of the Windows Update settings and re-apply them.
REM Once this is done, it will call for the WSUS server to rebuild the Windows Update folder structure.
ECHO This program will clear the Windows Update Files and Folders.
ECHO It will reset the Registry entries and re-start the Windows
ECHO Update by calling the WSUS server for Updates. Once started,
ECHO DO NOT cancel the program or damage to the Windows OS
ECHO installation may occur.
ECHO If you do not want this program to run, press Ctrl-C NOW.
ECHO Otherwise,
Pause
REM This part checks to make sure the SoftwareDistribution folder exists.
REM Sort of a security check to make sure this batch does what it is
REM supposed to do. If it does not exist, the program exits. You have bigger problems
REM such as a virus.
IF EXIST %systemroot%\SoftwareDistribution\ReportingEvents.log GOTO Continue
Echo The Folder SoftwareDistribution does not exist or is empty. Exiting...
ping -n 5 127.0.0.1 >NUL
exit
:Continue
REM This part deletes the contents of the "%windrive%\SoftwareDistribution" folder and removes it
net stop wuauserv
net stop bits
rd %systemroot%\softwaredistribution /S /Q
ping -n 5 127.0.0.1 >NUL
REM This part removes Registry keys associated with Windows Update
if exist %systemdrive%\SUSClientReset.log del SUSClientReset.log
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v PingID /f > %systemdrive%\SUSClientReset.log 2>&1
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v AccountDomainSid /f >> %systemdrive%\SUSClientReset.log 2>&1
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f >> %systemdrive%\SUSClientReset.log 2>&1
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientIDValidation /f >> %systemdrive%\SUSClientReset.log 2>&1
REM Windows 7 key
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v LastRestorePointSetTime /f >> %systemdrive%\SUSClientReset.log 2>&1
REM This part renames the Windows Update log file
IF EXIST %systemroot%\windowsupdate_log.old del %systemroot%\windowsupdate_log.old
ren WindowsUpdate.log WindowsUpdate_log.old
REM This part restarts windows update services
net start wuauserv
net start bits
goto comp
:comp
REM this part runs the Windows Update and rebuilds all files and folders
wuauclt.exe /resetauthorization /detectnow
wuauclt.exe /reportnow /detectnow
REM this part says GOODBYE!
Echo All Done!
REM 10 second pause
ping -n 10 127.0.0.1 >NUL
Exit
Again, you are on your own and I will not be held responsible for any problems after this. This works for me and should work for you