Функция DeleteFile (winbase.h)

Удаляет существующий файл.

Чтобы выполнить эту операцию как транзакцию, используйте функцию DeleteFileTransacted .

Syntax

BOOL DeleteFile(
  [in] LPCTSTR lpFileName
);

Parameters

[in] lpFileName

Имя файла, предназначенного для удаления.

По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 расширенных символов, добавьте "\\?\" в путь. Дополнительные сведения см. в разделе Именование файлов, путей и пространств имен.

Tip

Начиная с Windows 10 версии 1607, вы можете отказаться от ограничения MAX_PATH без предустановки "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" файлы именования, пути и пространства имен.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция завершается ошибкой, возвращаемое значение равно нулю (0). Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Если приложение пытается удалить файл, который не существует, функция DeleteFile завершается ошибкой с ERROR_FILE_NOT_FOUND. Если файл является файлом только для чтения, функция завершается ошибкой с ERROR_ACCESS_DENIED.

В следующем списке указаны некоторые советы по удалению, удалению или закрытию файлов:

  • Чтобы удалить файл только для чтения, сначала необходимо удалить атрибут только для чтения.
  • Чтобы удалить или переименовать файл, необходимо либо удалить разрешение на удаление файла, либо удалить дочернее разрешение в родительском каталоге.
  • Чтобы рекурсивно удалить файлы в каталоге, используйте функцию SHFileOperation .
  • Чтобы удалить пустой каталог, используйте функцию RemoveDirectory .
  • Чтобы закрыть открытый файл, используйте функцию CloseHandle .
Если вы наследуете каталог со всеми доступами, кроме удаления и удаления дочернего элемента, а списки управления доступом (ACL) новых файлов наследуются, то вы можете создать файл без возможности его удаления. Однако затем вы можете создать файл, а затем получить весь доступ, который вы запрашиваете на дескриптор, который возвращается вам во время создания файла.

Если вы запрашиваете разрешение на удаление во время создания файла, вы можете удалить или переименовать файл с этим дескриптором, но не с другими дескрипторами. Дополнительные сведения см. в разделе "Безопасность файлов и права доступа".

Функция DeleteFile завершается ошибкой, если приложение пытается удалить файл с другими открытыми дескрипторами, которые были открыты без FILE_SHARE_DELETE или сопоставлены с памятью.

Функция DeleteFile помечает файл для удаления при закрытии. Поэтому удаление файла не происходит до закрытия последнего дескриптора файла. Последующие вызовы CreateFile , чтобы открыть файл сбоем с ERROR_ACCESS_DENIED.

Поведение символьной ссылки—

Если путь указывает на символьную ссылку, то символьная ссылка удаляется, а не целевой объект. Чтобы удалить целевой объект, необходимо вызвать CreateFile и указать FILE_FLAG_DELETE_ON_CLOSE.

В Windows 8 и Windows Server 2012 эта функция поддерживается следующими технологиями.

Технологии Поддерживается
Протокол SMB 3.0 Да
Отработка отказа SMB 3.0 (TFO) Да
SMB 3.0 с масштабируемыми общими папками (SO) Да
Файловая система общего тома кластера (CSVFS) Да
Отказоустойчивая файловая система (ReFS) Да
 

Examples

Пример см. в разделе "Блокировка и разблокировка диапазонов байтов" в файлах.

Требования

Requirement Ценность
Минимальный поддерживаемый клиент Windows XP [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows Server 2003 [классические приложения | Приложения UWP]
целевая платформа Windows
Заголовка winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CloseHandle

CreateFile

DeleteFileTransacted

функции управления файлами

символьные ссылки