一个在Windows和Windows 7中运行良好的应用程序突然出现了Windows 10 Pro的问题。然而,对于Windows10 IoT企业,它似乎运行良好。2018年5月,Windows 10似乎也运行得很好,但安装较新的Windows 10时,它就不能工作了。
经过一些调查后,我们发现应用程序似乎无法创建用于使用Windows 10 Pro的持久数据的文件集。
进一步看,我们发现完整的路径名是不正确的。看起来,存储文件的目录的路径名,虽然构造不正确,但在Windows和Windows 7中工作得很好,但在Windows 10 Pro中却不起作用。
生成的路径名如下(这些是路径反斜杠,而不是用于转义字符的C/C++反斜杠):
\C:\DirA\DirB\DirC虽然正在生成的更正路径名如下所示:
\\.\C:\DirA\DirB\DirC阅读MSDN关于命名文件、路径和命名空间的文章,我对构建有效路径名的许多不同方式感到有点困惑。看来不同的Windows文件系统(FAT16、FAT32、NTFS等)有不同的命名约定。
我应该使用什么路径名格式,以便我的应用程序能够使用多个不同版本的C:在本地驱动器上的特定目录中创建和打开文件?我特别感兴趣的是Windows7、POSReady 7、Windows 10和Windows10 IoT Enterprise (与Windows 10 IoT不同)。
我使用Win32 API CreateFile()函数来创建/打开文件。
发布于 2019-01-23 21:17:06
我应该使用什么路径名格式,以便我的应用程序能够使用多个不同版本的
C:在本地驱动器上的特定目录中创建和打开文件?
你应该使用:
C:\DirA\DirB\DirC或者,如果您需要MAX_PATH,并且不能/不能选择使用Windows10Version1607中引入的新longPathAware功能:
\\?\C:\DirA\DirB\DirC不要使用\C:\DirA\DirB\DirC,这是不正确的格式化。
您不需要使用\\.\C:\DirA\DirB\DirC,尽管它可以工作。只是注意说:
"\\.\"前缀将访问Win32设备命名空间,而不是Win32文件命名空间。
通常,只在访问本地设备时才使用\\.\,如物理卷、串行/并行端口、命名管道、邮件插槽等,而不是访问文件系统上的条目。
https://stackoverflow.com/questions/54335653
复制相似问题