Windows сортирует по Юникоду, поэтому !
будет первым.
Начиная с Windows XP с пакетом обновления 1 (SP1), Microsoft предоставила раздел реестра, который может запретить использование API-интерфейса StrCmpLogicalW, отключив числовую сортировку Windows и вернув Windows Explorer к обработке имен файлов как строк. Раздел реестра выглядит следующим образом:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Currentversion\Policies\Explorer\NoStrCmpLogical
Дополнительную информацию можно найти в этом документе под названием «Порядок сортировки файлов и папок, имена которых содержат цифры, в Windows Vista, Windows XP и Windows Server 2003 отличается от порядка в Windows 2000».