Приложение, которое прекрасно работало с Windows XP и Windows 7, внезапно создало проблемы с Windows 10 Pro. Тем не менее, с Windows 10 IoT Enterprise, кажется, работает нормально. Казалось, что он отлично работал еще в мае 2018 года с Windows 10, но с более новыми установками Windows 10 он не работает.
После некоторого расследования мы обнаружили, что приложение, похоже, не может создать набор файлов, которые оно использует для постоянных данных в Windows 10 Pro.
Глядя дальше, мы обнаружили, что полный путь был неверным. Похоже, что путь к каталогу, в котором хранились файлы, хотя он и не был правильно сконструирован, хорошо работал с Windows XP и Windows 7, но не с Windows 10 Pro.
Генерируемое имя пути выглядело так (это обратные косые черты пути, а не обратные косые черты C / C ++ для экранирования символа):
\C:\DirA\DirB\DirC
в то время как генерируемый исправленный путь выглядит следующим образом:
\\.\C:\DirA\DirB\DirC
Читая статью MSDN о Именовании файлов, путей и пространств имен , я немного сбит с толку из-за того, что, как представляется, существует множество различных способов создания допустимого имени пути. Похоже, что разные файловые системы Windows (FAT16, FAT32, NTFS и т. Д.) Имеют разные соглашения об именах.
Какой формат пути мне следует использовать, чтобы мое приложение могло создавать и открывать файлы в определенном каталоге на локальном диске C:
в нескольких разных версиях Windows? Я особенно заинтересован в Windows 7, POSReady 7, Windows 10 и Windows 10 IoT Enterprise (что не совпадает с Windows 10 IoT).
Я использую Win32 API CreateFile()
для создания / открытия файлов.