文件系统函数上的符号链接效果
使用路径名称指定一个或多个文件的标准文件函数会受到符号链接的使用的影响。 本主题列出了这些函数,并描述了行为中的更改:
- 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
如果路径指向符号链接,该函数将返回符号链接的属性。
相关主题