A C# application I developed writes 300 small (1k) files to a local filesystem (NTFS). During that time explorer.exe uses up to 100% CPU time.
Things I already sorted out:
- Assured that no explorer windows are open displaying the target folder
- Excluded indexing for the target folder
- Expluded indexing for that complete drive
- Stopped and disabled the services "Windows Search" (SearchIndexer.exe)
All of this with no effect.
When I use Systinternals ProcessExplorer I see one busy thread of explorer.exe that states most of the time:
ntdll.dll!RtIFreeUnicodeString+0x1370
And its stack look like this:
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
What is explorer.exe doing here? Is there a direct dependency between the filesystem and the explorer? And how can I prevent this behaviour?