原来触发器是 AppHostSvc 使用的历史目录的“坏”权限(默认情况下,它是%windir%\system32\inetsrv\History
)
在确保权限与默认设置匹配后,我icacls /T /reset
在该目录(以及其他一些目录,inetsrv\config
包括
更多细节
svchost.exe
当 AppHostSvc 陷入错误状态时,我转储了该进程。其中一个线程具有以下调用堆栈:
ntdll.dll!NtClose()
KERNELBASE.dll!FindClose()
apphostsvc.dll!CONFIG_HISTORY_ENTITY::ScanHistoryDirectory(void)
apphostsvc.dll!CONFIG_HISTORY_ENTITY::TrimHistory(void)
apphostsvc.dll!CONFIG_HISTORY_ENTITY::SnapshotConfig(void)
apphostsvc.dll!CONFIG_HISTORY::SnapshotConfigFilesWorkItem(void)
apphostsvc.dll!CONFIG_HISTORY::ExecuteWorkItem(class MULTI_WORK_ITEM *)
apphostsvc.dll!MultiWorkQueueWorkCallback(struct _TP_CALLBACK_INSTANCE *,void *)
ntdll.dll!TppSimplepExecuteCallback()
ntdll.dll!TppWorkerThread()
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
函数名称ScanHistoryDirectory
表明它正在尝试扫描历史目录(duh)。我怀疑该目录中的某些权限被摆弄了,所以我尝试将它们重置为默认值。