Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在Windows中访问名称无效的文件_Macos_Winapi_Filenames_Createfile_Shared Directory - Fatal编程技术网

Macos 在Windows中访问名称无效的文件

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文件名中不允许使用字符。因此,

我在OS X 10.8主机上的VirtualBox中运行Windows 7。主机有一个共享文件夹,其中有一个名为
>>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<<<"