我开发的C#应用程序将300个小(1k)文件写入本地文件系统(NTFS)。 在此期间,explorer.exe最多使用100%的CPU时间。
我已经解决的事情:
所有这些都没有效果。
当我使用Systinternals ProcessExplorer时,我看到一个繁忙的explorer.exe线程,其中大部分时间都是这样:
ntdll.dll!RtIFreeUnicodeString+0x1370
它的堆栈看起来像这样:
0 msvcrt.dll!memcpy+0x8a
1 SHELL32.dll!Ordinal755+0x75c
2 SHELL32.dll!PathYetAnotherMakeUniqueName+0x35316
3 SHELL32.dll!ExtractIconExW+0xed8
4 SHELL32.dll!ExtractIconW+0x98e5
5 SHELL32.dll!SHChangeNotification_Lock+0x4179
6 SHELL32.dll!DAD_SetDragImage+0x1018
7 SHELL32.dll!DAD_SetDragImage+0x11ef
8 SHCORE.dll!GetProcessReference+0x3f
9 ntdll.dll!RtlDestroyHeap+0x317
10 ntdll.dll!RtlFreeUnicodeString+0x17d5
11 KERNEL32.DLL!BaseThreadInitThunk+0xd
12 ntdll.dll!RtlUserThreadStart+0x34
explorer.exe在这做什么?文件系统和资源管理器之间是否存在直接依赖关系? 我该如何防止这种行为?
答案 0 :(得分:4)
感谢您的所有评论。我能够追踪到Windows Defender消耗的CPU时间,该时间被explorer.exe通知了新文件
排除了一些相关的目录。
让我感到困惑的是,事实上,CPU被资源管理器消耗,而不是被防御者消耗...... 否则它会更明显