文件系统函数上的符号链接效果
使用符号链接会影响使用路径名称指定一个或多个文件的标准文件函数。 本主题列出了这些函数,并描述了行为中的更改:
- CopyFile 和 CopyFileTransacted
- CopyFileEx
- CreateFile 和 CreateFileTransacted
- CreateHardLink 和 CreateHardLinkTransacted
- DeleteFile 和 DeleteFileTransacted
- FindFirstChangeNotification
- FindFirstFile 和 FindFirstFileTransacted
- FindFirstFileEx
- FindNextFile
- GetBinaryType
- GetCompressedFileSize 和 GetCompressedFileSizeTransacted
- GetDiskFreeSpace
- GetDiskFreeSpaceEx
- GetFileAttributes
- GetFileAttributesEx
- GetFileSecurity
- GetTempPath
- GetVolumeInformation
- SetFileAttributes
- SetFileSecurity
- 相关主题
在以下说明中,使用以下术语:
- 源文件 - 要复制的原始文件。
- 目标文件 - 新创建的文件副本。
- 目标 - 符号链接指向的实体。
注意
接受使用 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_ALWAYS、 TRUNCATE_EXISTING或 FILE_FLAG_DELETE_ON_CLOSE ,则受影响的文件是符号链接。
如果未指定 FILE_FLAG_OPEN_REPARSE_POINT ,则:
- 如果打开现有文件并且它是符号链接,则返回的句柄是指向目标的句柄。
- 如果指定 了CREATE_ALWAYS、 TRUNCATE_EXISTING或 FILE_FLAG_DELETE_ON_CLOSE ,则受影响的文件是目标。
CreateHardLink 和 CreateHardLinkTransacted
如果路径指向符号链接,该函数将创建指向目标的硬链接。
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
如果路径指向符号链接,则函数将返回符号链接的属性。
相关主题