Функция ReplaceFileA (winbase.h)
Заменяет один файл другим с возможностью создания резервной копии исходного файла. Файл замены предполагает имя замененного файла и его удостоверение.
Синтаксис
BOOL ReplaceFileA(
[in] LPCSTR lpReplacedFileName,
[in] LPCSTR lpReplacementFileName,
[in, optional] LPCSTR lpBackupFileName,
[in] DWORD dwReplaceFlags,
LPVOID lpExclude,
LPVOID lpReserved
);
Параметры
[in] lpReplacedFileName
Имя заменяемого файла.
По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.
Совет
Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
Этот файл открывается с правами доступа GENERIC_READ, DELETE и SYNCHRONIZE . Режим общего доступа FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.
Вызывающий объект должен иметь доступ на запись к файлу для замены. Дополнительные сведения см. в разделе Безопасность файлов и права доступа.
[in] lpReplacementFileName
Имя файла, который заменит файл lpReplacedFileName .
По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.
Совет
Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
Функция пытается открыть этот файл с правами доступа SYNCHRONIZE, GENERIC_READ, GENERIC_WRITE, DELETE и WRITE_DAC , чтобы сохранить все атрибуты и списки управления доступом. В случае сбоя функция пытается открыть файл с правами доступа SYNCHRONIZE, GENERIC_READ, DELETE и WRITE_DAC . Режим общего доступа не указан.
[in, optional] lpBackupFileName
Имя файла, который будет служить резервной копией файла lpReplacedFileName . Если этот параметр имеет значение NULL, файл резервной копии не создается. Сведения о реализации файла резервной копии см. в разделе Примечания.
По умолчанию имя ограничено MAX_PATH символами. Чтобы расширить это ограничение до 32 767 символов в ширину, добавьте к пути "\\?\". Дополнительные сведения см. в статье Именование файлов, путей и пространств имен.
Совет
Начиная с Windows 10 версии 1607, вы можете согласиться на удаление ограничения MAX_PATH без добавления в начало "\\?\". Дополнительные сведения см. в разделе "Ограничение максимальной длины пути" статьи Именование файлов, путей и пространств имен .
[in] dwReplaceFlags
Варианты замены. Этот параметр может иметь одно или несколько из следующих значений.
lpExclude
Зарезервировано для будущего использования.
lpReserved
Зарезервировано для будущего использования.
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Ниже приведены возможные коды ошибок для этой функции.
Возвращаемый код/значение | Описание |
---|---|
|
Не удалось переименовать файл замены. Если был указан параметр lpBackupFileName , замененные и заменяющие файлы сохраняют свои исходные имена файлов. В противном случае замененный файл больше не существует, а файл замены существует под своим исходным именем. |
|
Не удалось переместить файл замены. Файл замены по-прежнему существует под его исходным именем; однако он унаследовал потоки файлов и атрибуты из файла, который он заменяет. Файл, который необходимо заменить, по-прежнему существует с другим именем. Если указано значение lpBackupFileName , это будет имя замененного файла. |
|
Не удалось удалить замененный файл. Замененные и заменяющие файлы сохраняют свои исходные имена файлов. |
Если возвращается какая-либо другая ошибка, например ERROR_INVALID_PARAMETER, замененные и заменяемые файлы сохранят свои исходные имена файлов. В этом сценарии файл резервной копии не существует и не гарантируется, что файл замены наследует все атрибуты и потоки замененного файла.
Комментарии
- Creation time (время создания)
- Короткое имя файла
- Идентификаторы объектов
- Списки DACLs
- Атрибуты ресурсов безопасности
- Шифрование
- Сжатие
- Именованные потоки еще не находятся в файле замены
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Атрибуты ресурсов безопасности (ATTRIBUTE_SECURITY_INFORMATION) для исходного файла не сохраняются до тех пор, пока не Windows 8 и Windows Server 2012.
Если файл замены защищен с помощью выборочной очистки, замененный файл будет защищен корпоративным идентификатором замещающего файла.
Файл резервной копии, замененный файл и файл замены должны находиться на одном томе.
Чтобы удалить или переименовать файл, необходимо иметь разрешение на удаление файла или удаление дочернего элемента в родительском каталоге. Если вы настроили каталог со всеми доступами, кроме удаления и удаления дочерних, а списки DACLS новых файлов наследуются, вы сможете создать файл, не удаляя его. Однако затем можно создать файл, и вы получите весь запрашиваемый доступ к дескриптору, возвращенный вам во время создания файла. Если вы запросили разрешение на удаление во время создания файла, вы можете удалить или переименовать файл с помощью этого дескриптора, но не с любым другим.
Примечание
Заголовок winbase.h определяет ReplaceFile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |