問題描述:
因IIS進程依賴某個dll文件,觸發安全軟件告警該dll文件硬鏈接數超過系統限制攔截IIS進程訪問,網站訪問超時或提示硬鏈接數問題。
根據上述情況查看問題dll文件硬鏈接情況,檢查命令如下:
fsutil hardlink list <dll 文件具體路徑>
示例問題dll文件如fsutil hardlink list C:\Windows\SysWOW64\bcryptprimitives.dll
問題dll文件除保留系統補丁更新引用的硬鏈接,同時存在多個指向winsxs 下 PendingDeletes 目錄的硬鏈接列表,對比其它在用服務器上述目錄無多個此dll文件硬鏈接
C:\Windows\winsxsTemp\PendingDeletes
相關命令:
檢查指定文件的文件ID
fsutil file queryFileID <文件具體路徑>
Dism以及 SFC命令
因操作系統為Windows 2008 R2,不支持Dism 選項 /startcomponentcleanup
使用 dism /online /cleanup-image /spsuperseded 進行操作
使用 dism /online /cleanup-image /scannhealth 檢查組件存儲損壞,未發現有關問題dll文件的日志記錄
SFC /SCNNOW
指定具體文件的完整性檢查
sfc /VERIFYFILE= C:\Windows\SysWOW64\bcryptprimitives.dll
上述操作檢查問題dll 文件正常
磁盤清理
要求安裝桌面體驗功能,在磁盤屬性點擊"磁盤清理"
注:Windows 2012以及后續版本已支持上述操作,不用安裝桌面體驗功能
在進行"磁盤清理"操作重啟,執行檢查命令未正?;厥諉栴}dll文件的緩存
PE 下使用Dism++檢查補丁是否未正常安裝
在離線模式下對系統鏡像還原掛起操作
DISM.exe /Image:D:\SYSTEM\Offline /Cleanup-Image /RevertPendingActions
此操作重啟檢查仍存在問題dll的硬鏈接映射
通過檢查 PendingDeletes 下 dll 與源路徑下bcryptprimitives.dll的文件ID一致,嘗試進行刪除 PendingDeletes目錄下有關問題dll的硬鏈接文件
再次進入PE進行強制刪除, 重啟服務器驗證已正常使用
cd C:\Windows\winsxs\Temp\PendingDeletes
takeown /f *. bcryptprimitives.dll /r
icacls *. bcryptprimitives.dll /grant Administrators:(F) /t
del /q *. bcryptprimitives.dll
參考
https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/how-to-clean-up-the-winsxs-directory-and-free-up-disk-space-on/ba-p/257250
https://sspai.com/post/66834