MoveFileExA 関数 (winbase.h)
さまざまな移動オプションを使用して、既存のファイルまたはディレクトリ (子を含む) を移動します。
この操作をトランザクション操作として実行するには、MoveFileTransacted 関数を使用します。
構文
BOOL MoveFileExA(
[in] LPCSTR lpExistingFileName,
[in, optional] LPCSTR lpNewFileName,
[in] DWORD dwFlags
);
パラメーター
[in] lpExistingFileName
ローカル コンピューター上のファイルまたはディレクトリの現在の名前。
dwFlags
既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付け
先端
Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。
[in, optional] lpNewFileName
ローカル コンピューター上のファイルまたはディレクトリの新しい名前。
ファイルを移動する場合、コピー先は別のファイル システムまたはボリューム上に配置できます。 移動先が別のドライブにある場合は、dwFlagsで
ディレクトリを移動する場合、移動先は同じドライブ上にある必要があります。
既定では、名前はMAX_PATH文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「ファイル、パス、および名前空間の名前付け
先端
Windows 10 バージョン 1607 以降では、事前に "\\?\" なしでMAX_PATHの制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。
[in] dwFlags
このパラメーターには、次の値のうち 1 つ以上を指定できます。
戻り値
関数が成功した場合、戻り値は 0 以外です。
関数が失敗した場合、戻り値はゼロ (0) になります。 拡張エラー情報を取得するには、GetLastError
備考
このレジストリ値の型は REG_MULTI_SZです。 各名前変更操作には、名前の変更が削除であるかどうかに応じて、次の NULL で終わる文字列のいずれかが格納されます。
- szSrcFile\0\0
- szSrcFile\0szDstFile\0
MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
MOVEFILE_DELAY_UNTIL_REBOOT フラグで指定された実際の移動操作と削除操作は、呼び出し元のアプリケーションの実行が停止した後に行われるため、戻り値はファイルの移動または削除の成功または失敗を反映できません。 代わりに、レジストリに適切なエントリを配置する場合の成功または失敗が反映されます。
システムは、MOVEFILE_DELAY_UNTIL_REBOOT フラグが付いた削除用にタグ付けされたディレクトリを、空の場合にのみ削除します。 ディレクトリを確実に削除するには、削除を試みる前に、ディレクトリからすべてのファイルを移動または削除します。 ファイルは起動時にディレクトリ内に存在する可能性がありますが、システムがディレクトリを削除するには、ファイルを削除または移動する必要があります。
移動操作と削除操作は、呼び出し元のアプリケーションで指定された順序で、起動時に実行されます。 起動時にファイルが含まれるディレクトリを削除するには、まずファイルを削除します。
ファイルがボリューム間で移動された場合、MoveFileEx
MoveFileEx 関数は、リンク追跡 サービスと操作を調整するため、リンク ソースは移動時に追跡できます。
ファイルを削除または名前変更するには、そのファイルに対する削除権限を持っているか、親ディレクトリの子権限を削除する必要があります。 削除と削除の子を除くすべてのアクセス権を持つディレクトリを設定し、新しいファイルの ACL が継承されている場合は、削除できないファイルを作成できます。 ただし、ファイルを作成し、ファイルの作成時に返されるハンドルに対して要求したすべてのアクセス権を取得できます。 ファイルの作成時に削除アクセス許可を要求した場合は、そのハンドルを使用してファイルを削除または名前変更できますが、他のハンドルでは削除できません。 詳細については、「ファイルのセキュリティとアクセス権の」を参照してください。
Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。
テクノロジー | サポート |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 透過的フェールオーバー (TFO) | はい |
SMB 3.0 とスケールアウト ファイル共有 (SO) | はい |
クラスター共有ボリューム ファイル システム (CsvFS) | はい |
回復性のあるファイル システム (ReFS) | はい |
例
例については、「一時ファイルの作成と使用」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winbase.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
DeleteFile の
GetWindowsDirectory の
MoveFileTransacted の
MoveFileWithProgress の
WritePrivateProfileString の