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

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

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

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

注意

接受使用 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