文件系统函数上的符号链接效果

使用路径名称指定一个或多个文件的标准文件函数会受到符号链接的使用的影响。 本主题列出了这些函数,并描述了行为中的更改:

在以下说明中,使用以下术语:

  • 源文件 - 要复制的原始文件。
  • 目标文件 - 新创建的文件副本。
  • 目标 - 符号链接指向的实体。

注意

接受使用 CreateFile 函数创建的句柄(如 GetFileTime 函数)的行为将因是否使用 FILE_FLAG_OPEN_REPARSE_POINT 标志调用 CreateFile 函数而有所不同。 有关详细信息,请参阅 CreateFile 以及以下 CreateFile 和 CreateFileTransacted 部分。

 

CopyFile 和 CopyFileTransacted

如果源文件是符号链接,则复制的实际文件是符号链接的目标。

如果目标文件已存在并且是符号链接,则符号链接的目标将被源文件覆盖。

CopyFileEx

如果指定了 COPY_FILE_COPY_SYMLINK,并且:

  • 如果源文件是符号链接,则会复制符号链接,而不是目标文件。
  • 如果源文件不是符号链接,则行为没有变化。
  • 如果目标文件是现有的符号链接,则会覆盖符号链接,而不是目标文件。
  • 如果还指定了 COPY_FILE_FAIL_IF_EXISTS,并且目标文件是现有的符号链接,则所有情况下作都会失败。

如果未指定 COPY_FILE_COPY_SYMLINK,则:

  • 如果还指定了 COPY_FILE_FAIL_IF_EXISTS,并且目标文件是现有的符号链接,则仅当符号链接的目标存在时,该作才会失败。
  • 如果未指定 COPY_FILE_FAIL_IF_EXISTS,则行为没有变化。

Windows Server 2003 和 Windows XP: 不支持 COPY_FILE_COPY_SYMLINK 标志。 如果源文件是符号链接,则复制的实际文件是符号链接的目标。

CreateFile 和 CreateFileTransacted

如果对此函数的调用会创建新文件,则行为没有变化。

如果指定了 FILE_FLAG_OPEN_REPARSE_POINT,并且:

  • 如果打开现有文件并且它是符号链接,则返回的句柄是符号链接的句柄。
  • 如果指定了 CREATE_ALWAYSTRUNCATE_EXISTINGFILE_FLAG_DELETE_ON_CLOSE,受影响的文件是符号链接。

如果未指定 FILE_FLAG_OPEN_REPARSE_POINT,则:

  • 如果打开现有文件并且它是符号链接,则返回的句柄是目标的句柄。
  • 如果指定了 CREATE_ALWAYSTRUNCATE_EXISTINGFILE_FLAG_DELETE_ON_CLOSE,受影响的文件就是目标。

如果路径指向符号链接,该函数将创建指向目标的硬链接。

DeleteFile 和 DeleteFileTransacted

如果路径指向符号链接,则删除符号链接,而不是目标。 若要删除目标,必须调用 CreateFile 并指定 FILE_FLAG_DELETE_ON_CLOSE

FindFirstChangeNotification

如果路径指向符号链接,则会为目标创建通知句柄。 如果应用程序已注册以接收包含符号链接的目录的更改通知,则仅当符号链接发生更改时,应用程序才会收到通知,而不是目标文件。

FindFirstFile 和 FindFirstFileTransacted

如果路径指向符号链接,则 WIN32_FIND_DATA 缓冲区包含有关符号链接的信息,而不是目标。

FindFirstFileEx

如果路径指向符号链接,则 WIN32_FIND_DATA 缓冲区包含有关符号链接的信息,而不是目标。

FindNextFile

如果路径指向符号链接,则 WIN32_FIND_DATA 缓冲区包含有关符号链接的信息,而不是目标。

GetBinaryType

如果路径指向符号链接,则使用目标文件。

GetCompressedFileSize 和 GetCompressedFileSizeTransacted

如果路径指向符号链接,该函数将返回目标的文件大小。

GetDiskFreeSpace

如果路径指向符号链接,则会对目标执行该作。

GetDiskFreeSpaceEx

如果路径指向符号链接,则会对目标执行该作。

GetFileAttributes

如果路径指向符号链接,该函数将返回符号链接的属性。

GetFileAttributesEx

如果路径指向符号链接,该函数将返回符号链接的属性。

GetFileSecurity

如果路径指向符号链接,该函数将返回符号链接的属性。

GetTempPath

如果路径指向符号链接,临时路径名称将维护任何符号链接。

GetVolumeInformation

如果路径指向符号链接,该函数将返回目标的卷信息。

SetFileAttributes

如果路径指向符号链接,该函数将检索符号链接的属性。

SetFileSecurity

如果路径指向符号链接,该函数将返回符号链接的属性。

CopyFile

CopyFileTransacted

CopyFileEx

CreateFile

CreateFileTransacted

CreateHardLink

CreateHardLinkTransacted

DeleteFile

DeleteFileTransacted

FindFirstChangeNotification

FindFirstFile

FindFirstFileEx

FindFirstFileTransacted

FindNextFile

GetBinaryType

GetCompressedFileSize

GetCompressedFileSizeTransacted

GetDiskFreeSpace

GetDiskFreeSpaceEx

GetFileAttributes

GetFileAttributesEx

GetFileSecurity

GetTempPath

GetVolumeInformation

SetFileAttributes

SetFileSecurity