Этот вопрос задавался много раз до и, как много раз указывалось ранее, IO.Path.GetInvalidFileNameChars
не подходит.
Во-первых, есть много имен, таких как PRN и CON, которые зарезервированы и недопустимы для имен файлов. Другие имена не разрешены только в корневой папке. Имена, оканчивающиеся на точку, также не допускаются.
Во-вторых, существуют различные ограничения длины. Читайте полный список для NTFS здесь .
В-третьих, вы можете подключаться к файловым системам, имеющим другие ограничения. Например, имена файлов ISO 9660 не могут начинаться с «-», но могут содержать его.
В-четвертых, что вы делаете, если два процесса «произвольно» выбирают одно и то же имя?
В общем, использование сгенерированных извне имен для имен файлов - плохая идея. Я предлагаю генерировать ваши собственные личные имена файлов и хранить понятные человеку имена для внутреннего использования.