Share via


檔案系統函式上的符號連結效果

使用路徑名稱來指定一或多個檔案的標準檔案函式會受到符號連結的使用所影響。 本主題列出這些函式,並描述行為變更:

在下列描述中,會使用下列詞彙:

  • 原始程式檔— 要複製的原始檔案。
  • 目的地檔案- 新建立的檔案複本。
  • 目標— 符號連結指向的實體。

注意

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