Fungsi ReplaceFileA (winbase.h)
Mengganti satu file dengan file lain, dengan opsi untuk membuat salinan cadangan file asli. File pengganti mengasumsikan nama file yang diganti dan identitasnya.
Sintaks
BOOL ReplaceFileA(
[in] LPCSTR lpReplacedFileName,
[in] LPCSTR lpReplacementFileName,
[in, optional] LPCSTR lpBackupFileName,
[in] DWORD dwReplaceFlags,
LPVOID lpExclude,
LPVOID lpReserved
);
Parameter
[in] lpReplacedFileName
Nama file yang akan diganti.
Secara default, namanya terbatas pada MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.
Tip
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" di Penamaan File, Jalur, dan Namespace untuk detailnya.
File ini dibuka dengan hak akses GENERIC_READ, DELETE, dan SYNCHRONIZE . Mode berbagi FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE.
Pemanggil harus memiliki akses tulis ke file yang akan diganti. Untuk informasi selengkapnya, lihat Keamanan File dan Hak Akses.
[in] lpReplacementFileName
Nama file yang akan menggantikan file lpReplacedFileName .
Secara default, namanya terbatas pada MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.
Tip
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" di Penamaan File, Jalur, dan Namespace untuk detailnya.
Fungsi ini mencoba membuka file ini dengan hak akses SYNCHRONIZE, GENERIC_READ, GENERIC_WRITE, DELETE, dan WRITE_DAC sehingga dapat mempertahankan semua atribut dan ACL. Jika gagal, fungsi mencoba membuka file dengan hak akses SYNCHRONIZE, GENERIC_READ, DELETE, dan WRITE_DAC . Tidak ada mode berbagi yang ditentukan.
[in, optional] lpBackupFileName
Nama file yang akan berfungsi sebagai salinan cadangan file lpReplacedFileName . Jika parameter ini NULL, tidak ada file cadangan yang dibuat. Lihat bagian Keterangan untuk detail implementasi pada file cadangan.
Secara default, namanya terbatas pada MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.
Tip
Dimulai dengan Windows 10, Versi 1607, Anda dapat memilih untuk menghapus batasan MAX_PATH tanpa menambahkan sebelumnya "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" di Penamaan File, Jalur, dan Namespace untuk detailnya.
[in] dwReplaceFlags
Opsi penggantian. Parameter ini bisa menjadi satu atau beberapa nilai berikut.
lpExclude
Disiapkan untuk penggunaan masa mendatang.
lpReserved
Disiapkan untuk penggunaan masa mendatang.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError. Berikut ini adalah kemungkinan kode kesalahan untuk fungsi ini.
Mengembalikan kode/nilai | Deskripsi |
---|---|
|
File pengganti tidak dapat diganti namanya. Jika lpBackupFileName ditentukan, file pengganti dan pengganti mempertahankan nama file aslinya. Jika tidak, file yang diganti tidak lagi ada dan file pengganti ada dengan nama aslinya. |
|
File pengganti tidak dapat dipindahkan. File pengganti masih ada dengan nama aslinya; namun, ia telah mewarisi aliran file dan atribut dari file yang digantinya. File yang akan diganti masih ada dengan nama yang berbeda. Jika lpBackupFileName ditentukan, itu akan menjadi nama file yang diganti. |
|
File yang diganti tidak dapat dihapus. File pengganti dan pengganti mempertahankan nama file aslinya. |
Jika ada kesalahan lain yang dikembalikan, seperti ERROR_INVALID_PARAMETER, file yang diganti dan diganti akan mempertahankan nama file aslinya. Dalam skenario ini, file cadangan tidak ada dan tidak dijamin bahwa file pengganti akan mewarisi semua atribut dan aliran file yang diganti.
Keterangan
- Waktu pembuatan
- Nama file pendek
- Pengidentifikasi objek
- DACL
- Atribut sumber daya keamanan
- Enkripsi
- Kompresi
- Aliran bernama belum ada dalam file pengganti
Windows 7, Windows Server 2008 R2, Windows Server 2008, Windows Vista, Windows Server 2003, dan Windows XP: Atribut sumber daya keamanan (ATTRIBUTE_SECURITY_INFORMATION) untuk file asli tidak dipertahankan hingga Windows 8 dan Windows Server 2012.
Jika file pengganti dilindungi menggunakan Penghapusan Selektif, maka file yang diganti akan dilindungi oleh id perusahaan dari file pengganti.
File cadangan, file yang diganti, dan file pengganti semuanya harus berada pada volume yang sama.
Untuk menghapus atau mengganti nama file, Anda harus memiliki izin hapus pada file atau menghapus izin anak di direktori induk. Jika Anda menyiapkan direktori dengan semua akses kecuali menghapus dan menghapus anak dan DACL file baru diwariskan, maka Anda harus dapat membuat file tanpa dapat menghapusnya. Namun, Anda kemudian dapat membuat file, dan Anda akan mendapatkan semua akses yang Anda minta pada handel yang dikembalikan kepada Anda pada saat Anda membuat file. Jika Anda meminta izin hapus pada saat Anda membuat file, Anda dapat menghapus atau mengganti nama file dengan handel tersebut tetapi tidak dengan yang lain.
Catatan
Header winbase.h mendefinisikan ReplaceFile sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | winbase.h (termasuk Windows.h) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |