2007年1月30日

svchost.exe -- application error the instruction at "0x745f2780"

今天在公司碰到了這個問題,透過 Google 大神找到了這個解決方法,先記錄下來,如果成功,再整理成新聞分享出來(原網址點這裡

引言:
Windows Update Broke My Machine (svchost.exe -- application error), and How to Fix It

If you turn on automatic updating for you machine, every Tuesday-ish, Microsoft will send you patches, and they'll quietly install. Amazingly, these patches (at least for me) never break anything. Until now, that is. After a recent update, my machine would spit out the following message every time I would boot.

svchost.exe -- application error the instruction at "0x745f2780" reference memory at "0x00000000". the memory could not be 'read'

Looking into the event log yielded the following:

Faulting application svchost.exe, version 5.1.2600.2180, faulting module msi.dll, version 3.1.4000.2435, fault address 0x00012780.

The problem wasn't so much this error message, but the fact then when the dialog with the error was closed, the machine became unusable (no new executables would start). If I left the dialog open, I could use my machine "normally", but it would hang on shutdown.

Something with Windows Update broke something with the Windows Installer. Reinstalling Windows Installer 3.1 didn't solve the problem, but the follow spelunked from Google saved my bacon:

Perform these steps leaving the svchost crash dialog open.

1. Click Start->Run, type "services.msc" (without quotation marks) in the open box and click OK.
2. Double click the service "Automatic Updates".
3. Click on the Log On tab, please ensure the option "Local System account" is selected and the option "Allow service to interact with desktop" is unchecked.

4. Check if this service has been enabled on the listed Hardware Profile. If not, please click the Enable button to enable it.
5. Click on the tab "General "; make sure the "Startup Type" is "Automatic". Then please click the button "Start" under "Service Status" to start the service.
6. Repeat the above steps with the other service: Background Intelligent Transfer Service (BITS)

Step 4: Re-register Windows Update components and Clear the corrupted Windows Update temp folder
================================

1. Click on Start and then click Run,
2. In the open field type "REGSVR32 WUAPI.DLL" (without quotation marks) and press Enter.
3. When you receive the "DllRegisterServer in WUAPI.DLL succeeded" message, click OK.
4. Please repeat these steps for each of the following commands:

REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL

After the above steps are finished. Sicne temporary folder of Windows Update may be corrupted. We can refer to the following steps to rename this folder that

1. Click Start, Run, type: cmd and press Enter. Please run the following command in the opened window.

net stop WuAuServ

(note, you might need to reboot before the net stop command will work)

2. Click Start, Run, type: %windir% and press Enter.
3. In the opened folder, rename the folder SoftwareDistribution to SDold.
4. Click Start, Run, type: cmd and press Enter. Please run the following command in the opened window.

net start WuAuServ

UPDATE: This post has received a ton of comments. One, in particular, suggests an easier fix for this problem:

1.Go 2 the start menu
2.Right click "my computer"
3.Click "properties" then the "automatic updates"
tab
4.Choose "turn off automatic updates"
5.Reboot your computer
6.Go back to start menu and in all programs go to "windows update" you have to be connected to the internet.
7.Manually update windows.
8.Turn your automatic updates back on.

I have also had a number of people comment that the problem reappears after some time. The recommended fix, if the problem reappears, is to turn off automatic updates, and just manually go to Windows Update periodically and update your machine.

Thanks for all the comments. I've very please to know that this is solving the problem for many people.

One last thing, if you're interested in the kinds of things you might face should if you're interested in Windows Vista, I recommend checking out the WinSuperSite.

  很幸運的,我碰到的 Case 只要重新安裝 Windows Installer 就可以恢復正常了!所以上面這篇文章我是什麼都沒有用到。