Windows 程序啟動服務失敗 - Windows 10
Windows 程序啟動服務 (WAS) 將不再在我的 Windows 10 PC 上啟動。因此,IIS 將無法啟動。我不太確定它是什麼時候發生的,但可能是在上個月。
在啟動期間,我現在在系統日誌中收到一系列 4 個錯誤事件:
WAS 5215:Windows Process Activation Service (WAS) 未能執行離線設置的初始化。數據欄位包含錯誤號。
$$ Data field: 50000780 $$ WAS 5005:Windows Process Activation Service (WAS) 正在停止,因為它遇到了錯誤。數據欄位包含錯誤號。
$$ Data field: 50000780 $$ 服務控制管理器 7023:WAS 服務因以下錯誤而終止:文件存在。
服務控制管理器 7001:W3SVC 服務依賴於由於以下錯誤而無法啟動的 WAS 服務:文件存在。
由於文件存在錯誤,我對此類錯誤的引用並不多。
(我嘗試使用 ProcMon 來嘗試辨識它所指的文件,但它絕對拒絕執行。)
編輯…終於讓 ProcMon 工作(在使用 VS2017 提取 64 位版本之後)。原來導致上述問題的文件是
C:\Windows\System32\inetsrv\Config
文件夾中的“applicationhost.config.tmp”文件。刪除該文件允許該過程進一步繼續。現在,第一個和第三個錯誤是:
WAS 5215:Windows Process Activation Service (WAS) 未能執行離線設置的初始化。數據欄位包含錯誤號。
$$ Data field: 0D000780 $$ 服務控制管理器 7023:Windows 程序啟動服務服務因以下錯誤而終止:數據無效。
根據 Yanbing Shi 的回答,以下是文件中的最新行
iis.log
:
[01/13/2018 23:10:41] [ ***** IIS 10.0 Component Based Setup ***** ] [01/13/2018 23:10:41] .\inetsrv\iissetup.exe /install SharedLibraries /nano [01/13/2018 23:10:41] Setting Installation Type to Nano [01/13/2018 23:10:41] Successfully added IIS_IUSRS ACE to DACL at %ProgramData%\Microsoft\Windows\WER\ReportQueue. [01/13/2018 23:10:42] < !!FAIL!! > Failed to create the NetFrameworkConfigurationKey key container (result=0x8009000f) [01/13/2018 23:10:42] < !!FAIL!! > Install of component SharedLibraries result=0x8009000f [01/13/2018 23:10:42] < !!FAIL!! > COMPONENT::ExecuteCommand result=0x8009000f [01/13/2018 23:10:42] [ End of IIS 10.0 Component Based Setup ]
In response to Yanbing Shi’s next answer …
起初,我無法查看/編輯/刪除
d6d986f09a1ee04e24c949879fdb506c_*
文件。當我試圖查看它的權限時,我收到了一條消息:You do not have permission to view this object's security properties, even as an administrative user.
但是,我能夠將所有權更改為“管理員”,然後向該組Full
授予權限,然後我就可以查看它了。該文件不是文本文件,但文件中大約 28 個字節是NetFrameworkConfigurationKey
. 我將文件移出該文件夾。然後我跑
net start was
了System error 80 has occurred. The file exists.
文件中沒有添加任何內容,
iis.log
但通常的錯誤事件已添加到系統事件日誌中。然後我手動刪除了
applicationhost.config.tmp
文件並執行net start was
. 這一次,我得到System error 13 has occurred. The data is invalid.
這一次,有新的條目
iis.log
[03/18/2018 07:44:54] [ ***** IIS 10.0 Component Based Setup ***** ] [03/18/2018 07:44:54] .\inetsrv\iissetup.exe /install SharedLibraries /nano [03/18/2018 07:44:54] Setting Installation Type to Nano [03/18/2018 07:44:55] Successfully added IIS_IUSRS ACE to DACL at %ProgramData%\Microsoft\Windows\WER\ReportQueue. [03/18/2018 07:44:55] Created NetFrameworkConfigurationKey key containter [03/18/2018 07:44:56] Created NetFrameworkConfigurationKey user key [03/18/2018 07:44:56] Set ACLs on NetFrameworkConfigurationKey [03/18/2018 07:44:56] < !!FAIL!! > Failed to create the iisWasKey key container (result=0x8009000f) [03/18/2018 07:44:56] < !!FAIL!! > Install of component SharedLibraries result=0x8009000f [03/18/2018 07:44:56] < !!FAIL!! > COMPONENT::ExecuteCommand result=0x8009000f [03/18/2018 07:44:56] [ End of IIS 10.0 Component Based Setup ]
失敗是因為 WAS 在啟動期間無法訪問機器密鑰。升級後第一次啟動時,如果沒有,WAS 會嘗試創建新的機器密鑰,或者查詢舊作業系統留下的舊機器密鑰。在這種情況下,存在舊的機器密鑰,但遺憾的是 WAS 無法訪問它們,原因不明。這些機器密鑰用於加密 applicationHost.config 或 web.config 中的敏感資訊(例如使用者密碼)。如果沒有可以使用的機器密鑰,WAS 將無法啟動。
以下刪除 IIS 使用的幾個機器密鑰的步驟可能有助於允許 WAS 啟動 - WAS 將在啟動時簡單地重新創建這些密鑰。
- 轉到您的 RSA 機器密鑰文件夾:C:\Users\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
- 查找名稱以 d6d986f09a1ee04e24c949879fdb506c_* 開頭的機器密鑰(文件)。如果您使用記事本打開它,您應該會看到純文字“NetFrameworkConfigurationKey”。
- 將此文件備份到其他文件夾。
- 刪除此文件。
- 按照與2-4相同的步驟備份和刪除iisWasKey:76944fb33636aeddb9590521c2e8815a_*
- 按照與2-4相同的步驟備份和刪除iisConfigurationKey:6de9cb26d2b98c01ec4e9e8b34824aa2_*
- 手動啟動 WAS
- 通過“以管理員身份執行”打開命令提示符。
- 淨開始是