Macos 在Windows中访问名称无效的文件
我在OS X 10.8主机上的VirtualBox中运行Windows 7。主机有一个共享文件夹,其中有一个名为Macos 在Windows中访问名称无效的文件,macos,winapi,filenames,createfile,shared-directory,Macos,Winapi,Filenames,Createfile,Shared Directory,我在OS X 10.8主机上的VirtualBox中运行Windows 7。主机有一个共享文件夹,其中有一个名为>>file@jcophenha的文件,其答案是正确的。但是,如果您阅读,它会声明\\?\前缀仅用于本地路径。对于UNC路径,必须使用\\?\UNC\前缀,例如: L"\\\\?\\UNC\\VBOXSVR\\ft1\\>>>FILE<<<" L“\\\?\\UNC\\VBOXSVR\\ft1\\>>文件Windows文件名中不允许使用字符。因此,
>>file@jcophenha的文件,其答案是正确的。但是,如果您阅读,它会声明\\?\
前缀仅用于本地路径。对于UNC路径,必须使用\\?\UNC\
前缀,例如:
L"\\\\?\\UNC\\VBOXSVR\\ft1\\>>>FILE<<<"
L“\\\?\\UNC\\VBOXSVR\\ft1\\>>文件Windows文件名中不允许使用
字符。因此,无法在Win32下打开该文件
文档中列出了以下保留字符:
- <(少于)
- >(大于)
- :(冒号)
- “(双引号)
- /(正斜杠)
- \(反斜杠)
- |(垂直杆或管道)
- ??(问号)
- *(星号)
Windows在这方面与*nix系统有很大不同。在*nix上,对于文件中可以使用的字符,通常没有此类操作系统强制的限制。正如我的一位朋友在试图删除名为*
的文件时发现的那样,他遭受了最不幸的后果
现在,可以想象,这些限制在使用本机API时不适用。您可以尝试使用打开该文件。那也许管用 对不起,那似乎也不行。这很令人沮丧。如果\\?\UNC\server\share
不起作用,那么你就不走运了。远程文件需要重命名为更具跨平台兼容性的文件(或者至少创建了一个符号链接,该链接映射到真实文件,并且可以跨平台访问)。@Remy问题是
都是保留字符。如果您阅读了链接文章,\\?\
和\?\UNC\
前缀的目的是关闭解析,包括忽略保留字符。恐怕你是对的NtCreateFile
没有帮助,我只能在从名称中剥离
后打开该文件。奇怪的是,其他被禁止的字符,如管道|
都没有问题。远程文件系统是否提供短文件名?如果是这样,您可以使用文件的短名称访问该文件。@JonathanPotter您的想法不错,但不支持,文件系统不支持短文件名,VirtualBox也不共享它们。这可能适用于在实际网络上使用适当驱动程序共享的NTFS卷文件夹。短文件名看起来像\uuuufil~1
。
L"\\\\?\\UNC\\VBOXSVR\\ft1\\>>>FILE<<<"