【发布时间】:2019-01-23 21:06:27
【问题描述】:
在 Windows XP 和 Windows 7 上运行良好的应用程序突然在 Windows 10 Pro 中出现问题。但是,对于 Windows 10 IoT Enterprise,它似乎运行良好。早在 2018 年 5 月,它似乎在 Windows 10 上也可以正常工作,但在 Windows 10 的较新安装中,它不起作用。
经过一些调查,我们发现该应用程序似乎无法通过 Windows 10 专业版创建用于持久数据的文件集。
进一步看,我们发现完整的路径名不正确。似乎存储文件的目录的路径名虽然构造不正确,但在 Windows XP 和 Windows 7 上运行良好,但在 Windows 10 Pro 上却不行。
生成的路径名看起来像这样(那些是路径反斜杠,而不是用于转义字符的 C/C++ 反斜杠):
\C:\DirA\DirB\DirC
生成的正确路径名如下所示:
\\.\C:\DirA\DirB\DirC
阅读 MSDN 在Naming Files, Paths, and Namespaces 上的文章后,我对构造有效路径名的多种不同方法感到有些困惑。不同的 Windows 文件系统(FAT16、FAT32、NTFS 等)似乎有不同的命名约定。
我应该使用什么路径名格式,以便我的应用程序能够使用多个不同版本的 Windows 在本地驱动器 C: 上的特定目录中创建和打开文件?我对 Windows 7、POSReady 7、Windows 10 和 Windows 10 IoT Enterprise(与 Windows 10 IoT 不同)特别感兴趣。
我正在使用 Win32 API CreateFile() 函数来创建/打开文件。
【问题讨论】:
-
似乎不同的 Windows 文件系统(FAT16、FAT32、NTFS 等)具有不同的命名约定 - 不,这是错误的。这里的文件系统根本不相关。 win32 sunsystem 在传递到文件系统之前转换您的路径本机格式。 The Definitive Guide on Win32 to NT Path Conversion
-
@RbMm 感谢您提供指向指南文档的链接。