次の方法で共有


CopyFileW 関数 (winbase.h)

既存のファイルを新しいファイルにコピーします。

CopyFileEx 関数には、2 つの追加機能があります。 CopyFileEx は、コピー操作の一部が完了するたびに指定されたコールバック関数を呼び出すことができます。また、コピー操作中に CopyFileEx 取り消すことができます。

この操作をトランザクション操作として実行するには、CopyFileTransacted 関数を使用します。

構文

BOOL CopyFileW(
  [in] LPCWSTR lpExistingFileName,
  [in] LPCWSTR lpNewFileName,
  [in] BOOL    bFailIfExists
);

パラメーター

[in] lpExistingFileName

既存のファイルの名前。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

lpExistingFileName 存在しない場合、CopyFile は失敗し、GetLastError ERROR_FILE_NOT_FOUNDを返します。

[in] lpNewFileName

新しいファイルの名前。

既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付けする」を参照してください。

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

[in] bFailIfExists

このパラメーターが TRUE で、lpNewFileName で指定された新しいファイル 既に存在する場合、関数は失敗します。 このパラメーターが FALSE され、新しいファイルが既に存在する場合、関数は既存のファイルを上書きして成功します。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

既存のファイルのセキュリティ リソース プロパティ (ATTRIBUTE_SECURITY_INFORMATION) が新しいファイルにコピーされます。

Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: 既存のファイルの セキュリティ リソースプロパティは、Windows 8 および Windows Server 2012 まで新しいファイルにコピーされません。

既存のファイルのファイル属性が新しいファイルにコピーされます。 たとえば、既存のファイルに FILE_ATTRIBUTE_READONLY ファイル属性がある場合、CopyFile の呼び出しによって作成されたコピーには、FILE_ATTRIBUTE_READONLY ファイル属性も含まれます。 詳細については、「ファイル属性の取得と変更」を参照してください。

この関数は、コピー先ファイルが既に存在し、FILE_ATTRIBUTE_HIDDEN または FILE_ATTRIBUTE_READONLY 属性が設定されている場合、ERROR_ACCESS_DENIED で失敗します。

CopyFile を使用して暗号化されたファイルをコピーすると、ソース ファイルの暗号化に使用されるキーを使用して、コピー先ファイルの暗号化が試行されます。 これができない場合、この関数は既定のキーを使用して宛先ファイルの暗号化を試みます。 どちらの方法も実行できない場合は、CopyFileERROR_ENCRYPTION_FAILED エラー コードで失敗します。

シンボリック リンクの動作: ソース ファイルがシンボリック リンクの場合、コピーされた実際のファイルがシンボリック リンクのターゲットになります。

宛先ファイルが既に存在し、シンボリック・リンクである場合、シンボリック・リンクのターゲットはソース・ファイルによって上書きされます。

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

テクノロジー サポート
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 透過的フェールオーバー (TFO) はい
SMB 3.0 とスケールアウト ファイル共有 (SO) はい
クラスター共有ボリューム ファイル システム (CsvFS) はい
回復性のあるファイル システム (ReFS) はい
 

例については、「ファイル属性の取得と変更」を参照してください。

手記

winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CopyFile を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winbase.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

CopyFileEx

CopyFileTransacted

CreateFile の

ファイル属性定数

ファイル管理機能の

MoveFile の

シンボリック リンク の