為加固安全,刪除 C 盤所有非 Administrators 權限,僅保留管理員組完全控制。隨後發現 ASP 應用報錯:Server.CreateObject 失敗、文件讀寫失效、數據庫連接異常。
系統組件(scrrun.dll、msado15.dll、msxml*.dll)運行上下文為 IUSR_機器名 / IIS_WPG / NETWORK SERVICE,權限被誤刪導致 COM 對象無法實例化。
# 管理員命令提示符
regsvr32 %windir%\system32\scrrun.dll
# 彈窗提示 "DllRegisterServer in scrrun.dll succeeded" 即成功
regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"
# 64 位系統可能在 SysWOW64 下
regsvr32 "C:\Program Files (x86)\Common Files\System\ado\msado15.dll"
# 定位所有 msxml*.dll
dir %windir%\system32\msxml*.dll
dir %windir%\SysWOW64\msxml*.dll # 64位系統
# 為每個 DLL 添加 IIS_IUSRS / IUSR 讀取&執行權限
icacls "C:\Windows\System32\msxml3.dll" /grant "IIS_IUSRS:(RX)" "IUSR:(RX)"
icacls "C:\Windows\System32\msxml6.dll" /grant "IIS_IUSRS:(RX)" "IUSR:(RX)"
# 以此類推 msxml4.dll 等
# 恢復 C:\Windows\System32\inetsrv 權限
icacls "C:\Windows\System32\inetsrv" /reset /t /c /q
# 恢復網站根目錄權限
icacls "D:\wwwroot" /grant "IIS_IUSRS:(OI)(CI)(RX)" "IUSR:(OI)(CI)(RX)" /t
icacls /save 導出 ACL 策略,變更前備份,出問題一鍵還原secedit /configure 對照安全模板檢查