我开发的 C# 应用程序将 300 个小 (1k) 文件写入本地文件系统 (NTFS)。 在此期间,explorer.exe 使用高达 100% 的 CPU 时间。
我已经整理好的东西:
- 确保没有资源管理器窗口打开显示目标文件夹
- 排除目标文件夹的索引
- 为整个驱动器排除索引
- 停止并禁用“Windows 搜索”服务 (SearchIndexer.exe)
所有这些都没有效果。
当我使用 Sysinternals 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 在这里做什么?文件系统和资源管理器之间是否存在直接依赖关系? 我怎样才能防止这种行为?
最佳答案
感谢您的所有评论。我能够追踪到 Windows Defender 消耗的 CPU 时间,它被 explorer.exe 通知了新文件
排除一些相关目录有帮助。
令我困惑的是,CPU 被资源管理器消耗,而不是防御者...... 否则会更明显
关于windows - 自己的程序写入 300 个小文件。在那段时间里,explorer.exe 占用了近 100% 的 CPU 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36973104/