IIS (Internet Information Services) 啟動失敗通常源於 進程身分帳號密碼不同步、分散式交易協調器 (MSDTC) 損壞、COM+ 應用程式目錄損毀 三大核心原因。本文提供標準化排查流程、自動化修復腳本與預防機制,助您在 15 分鐘內恢複服務。
| 現象 | 典型錯誤/日誌 | 核心原因 |
|---|---|---|
| W3SVC 服務無法啟動 | Event ID 1000/1001/1002、HTTP Error 503 Service Unavailable | 應用程式集區身分密碼錯誤、IWAM 帳號鎖定/過期 |
| ASP/ASP.NET 頁面 500 內部錯誤 | Active Server Pages error 'ASP 0115'、Error 80110414 | COM+ 應用程式 IIS Out-Of-Process Pooled Applications 身分驗證失敗 |
| MSDTC 服務啟動失敗 | The MSDTC service failed to start、Event ID 4101 | MSDTC 登錄檔/日誌損壞、CID 衝突 |
| 無法展開「COM+ 應用程式」節點 | MMC 錯誤、msdtc -resetlog 可修復 | MSDTC 日誌檔遺失/損壞 |
找不到 IIS Out-Of-Process Pooled Applications | COM+ 目錄遺失該應用程式 | 註冊表/COM+ 目錄損壞 |
IIS 6.0 使用 IWAM_<MachineName> (應用程式集區身分) 與 IUSR_<MachineName> (匿名存取) 兩個本地帳號。密碼儲存在三處,**必須完全一致**:
WAMUserPass / WAMUserName)IIS Out-Of-Process Pooled Applications 身分分頁
@echo off
REM ========== IIS 6.0 IWAM 密碼同步修復腳本 ==========
REM 需以管理員身分執行,適用 Windows Server 2003 / XP / 2000
set NEW_PASSWORD=Str0ngP@ssw0rd!2024
set IWAM_ACCOUNT=IWAM_%COMPUTERNAME%
set IUSR_ACCOUNT=IUSR_%COMPUTERNAME%
echo 1. 重設本地帳號密碼...
net user %IWAM_ACCOUNT% %NEW_PASSWORD% /active:yes
net user %IUSR_ACCOUNT% %NEW_PASSWORD% /active:yes
echo 2. 同步 IIS Metabase...
cd /d "%systemdrive%\inetpub\adminscripts"
cscript adsutil.vbs set w3svc/WAMUserPass "%NEW_PASSWORD%"
cscript adsutil.vbs set w3svc/WAMUserName "%IWAM_ACCOUNT%"
echo 3. 同步 COM+ 應用程式身分...
cscript synciwam.vbs -v
echo 4. 重啟 IIS 相關服務...
iisreset /restart
echo 修復完成,請驗證網站存取。
pause
Error 80110414 手工修補comexp.msc (元件服務)元件服務 → 電腦 → 我的電腦 → COM+ 應用程式 → IIS Out-Of-Process Pooled ApplicationsIWAM_<MachineName> 與新密碼 → 確定cscript synciwam.vbs -vnet start msdtc 失敗
@echo off
REM ========== MSDTC 完全重建腳本 ==========
REM 必須以管理員身分執行,會重置所有 MSDTC 設定
echo 停止 MSDTC 服務...
net stop msdtc
echo 卸載 MSDTC 服務...
msdtc -uninstall
echo 刪除殘留註冊表機碼 (備份後執行)...
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\MSDTC" /f
reg delete "HKLM\SOFTWARE\Microsoft\MSDTC" /f
reg delete "HKCR\CID" /f
echo 重新安裝 MSDTC 服務...
msdtc -install
echo 重建日誌檔案 (如有遺失)...
msdtc -resetlog
echo 啟動 MSDTC 服務...
net start msdtc
echo 驗證 MSDTC 狀態...
msdtc -verbose
pause
msdtc -resetlog
REM 重建 MSDTC 日誌通常即可恢複 COM+ 目錄可見性
IIS Out-Of-Process Pooled Applications
cd /d "%windir%\system32\inetsrv"
rundll32 wamreg.dll, CreateIISPackage
REM 區分大小寫!必須精確輸入 CreateIISPackage
regsvr32 asptxn.dll
REM 重新註冊 ASP 交易支援元件
REM 關閉並重新開啟「元件服務」MMC 主控台驗證
The specified module could not be foundIWAM_ 帳號具備網站目錄 RX 權限、Temp 目錄 RW 權限| 巡檢項目 | 頻率 | 腳本/工具 | 告警閾值 |
|---|---|---|---|
| IWAM/IUSR 帳號狀態 (啟用/未過期/密碼同步) | 每日 | PowerShell Get-LocalUser + adsutil.vbs 查詢 | 任一不一致即告警 |
| MSDTC 服務狀態 (Running/啟動類型 Auto) | 每日 | Get-Service msdtc | 非 Running 告警 |
| COM+ 目錄完整性 (關鍵應用程式存在) | 每週 | comadmin.exe / PowerShell COM+ 模組 | 缺少關鍵應用告警 |
| IIS Metabase 備份 | 每日 | iiscnfg.vbs /save /f backup.xml | 備份失敗告警 |
| 應用程式集區健康度 (啟用/CPU/記憶體/回收) | 每 5 分鐘 | Zabbix/促etheus windows_exporter + IIS AppPool 監控 | Stopped/High CPU 告警 |
ApplicationPoolIdentity (虛擬帳號),無需管理密碼同步Web Deploy (msdeploy)、AppCmd、Configuration Editor、IIS 遷移工具包Application Compatibility Toolkit (ACT)、Fiddler 抓包對比掌握上述三大梯隊修復流程,可應對絕大多數 IIS 6.0 啟動失敗場景。但根治之道在於**技術債遷移**,將基礎設施升級至現代支援週期內的平台,才能從根本上消除此類反覆故障。