SetFileAttributesA 関数 (fileapi.h)

ファイルまたはディレクトリの属性を設定します。

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

構文

BOOL SetFileAttributesA(
  [in] LPCSTR lpFileName,
  [in] DWORD  dwFileAttributes
);

パラメーター

[in] lpFileName

属性を設定するファイルの名前。

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

ヒント

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

[in] dwFileAttributes

ファイルに設定するファイル属性。

このパラメーターには、ビットごとの OR 演算子を使用して組み合わせた 1 つ以上の値を指定できます。 ただし、他のすべての値 はFILE_ATTRIBUTE_NORMALをオーバーライドします。

この関数では、すべての属性がサポートされているわけではありません。 詳細については、「解説」を参照してください。

サポートされている属性値の一覧を次に示します。

説明
FILE_ATTRIBUTE_ARCHIVE
32 (0x20)
アーカイブ ファイルまたはディレクトリであるファイルまたはディレクトリ。 通常、アプリケーションでは、この属性を使用して、バックアップまたは削除のためにファイルをマークします。
FILE_ATTRIBUTE_HIDDEN
2 (0x2)
ファイルまたはディレクトリは非表示です。 通常のディレクトリ一覧には含まれません。
FILE_ATTRIBUTE_NORMAL
128 (0x80)
他の属性が設定されていないファイル。 この属性は、単独で使用する場合にのみ有効です。
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192 (0x2000)
ファイルまたはディレクトリは、コンテンツ インデックス作成サービスによってインデックス付けされません。
FILE_ATTRIBUTE_OFFLINE
4096 (0x1000)
ファイルのデータはすぐには使用できません。 この属性は、ファイル データが物理的にオフライン ストレージに移動されることを示します。 この属性は、階層型ストレージ管理ソフトウェアであるリモート ストレージによって使用されます。 アプリケーションでは、この属性を任意に変更しないでください。
FILE_ATTRIBUTE_READONLY
1 (0x1)
読み取り専用のファイル。 アプリケーションはファイルを読み取ることができますが、ファイルに書き込んだり削除したりすることはできません。 この属性はディレクトリでは使用されません。 詳細については、「Windows Server 2003、Windows XP、または Windows Vista では、フォルダーの読み取り専用またはシステム属性を表示または変更できません。
FILE_ATTRIBUTE_SYSTEM
4 (0x4)
オペレーティング システムがの一部を使用するか、排他的に使用するファイルまたはディレクトリ。
FILE_ATTRIBUTE_TEMPORARY
256 (0x100)
一時ストレージに使用されているファイル。 ファイル システムでは、十分なキャッシュ メモリが使用可能な場合に大容量ストレージにデータを書き戻すのを避けます。これは、通常、ハンドルが閉じられた後にアプリケーションによって一時ファイルが削除されるためです。 そのシナリオでは、システムはデータの書き込みを完全に回避できます。 それ以外の場合は、ハンドルが閉じられた後にデータが書き込まれます。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

次の表では、 SetFileAttributes を使用して設定できない属性を設定する方法について説明します。 すべてのファイル属性値とその説明の完全な一覧については、「 ファイル属性定数」を参照してください。

属性 設定方法
FILE_ATTRIBUTE_COMPRESSED

0x800

ファイルの圧縮状態を設定するには、FSCTL_SET_COMPRESSION操作で DeviceIoControl 関数を使用します。
FILE_ATTRIBUTE_DEVICE

0x40

予約;は使用しないでください。
FILE_ATTRIBUTE_DIRECTORY

0x10

ファイルをディレクトリに変換することはできません。 ディレクトリを作成するには、 CreateDirectory または CreateDirectoryEx 関数 使用します。
FILE_ATTRIBUTE_ENCRYPTED

0x4000

暗号化されたファイルを作成するには、 createFile 関数と FILE_ATTRIBUTE_ENCRYPTED 属性を使用します。 既存のファイルを暗号化されたファイルに変換するには、 EncryptFile 関数を使用します。
FILE_ATTRIBUTE_REPARSE_POINT

0x400

再解析ポイントをファイルまたはディレクトリに関連付けるには、 DeviceIoControl 関数を 使用してFSCTL_SET_REPARSE_POINT 操作を実行します。
FILE_ATTRIBUTE_SPARSE_FILE

0x200

ファイルのスパース属性を設定するには、FSCTL_SET_SPARSE操作で DeviceIoControl 関数を使用します。
 

トランザクション操作

ファイルがトランザクションで変更のために開かれている場合、トランザクションがコミットされるまで、他のスレッドはファイルを開いて変更を行いません。 そのため、トランザクションスレッドが最初にファイルを開いた場合、トランザクションがコミットされる前にファイルを変更しようとする後続のスレッドは共有違反を受け取ります。 トランザクションされていないスレッドがトランザクションスレッドの前にファイルを変更しても、トランザクションが開こうとしたときにファイルが開かれている場合、トランザクションはエラー ERROR_TRANSACTIONAL_CONFLICTを受け取ります。

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

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル はい
SMB 3.0 Transparent Failover (TFO) はい
SMB 3.0 とスケールアウト ファイル共有 (SO) はい
クラスター共有ボリューム ファイル システム (CsvFS) はい
Resilient File System (ReFS) はい
 

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

注意

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

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー fileapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

ファイル属性定数

ファイル管理機能

GetFileAttributes

SetFileAttributesTransacted

シンボリック リンク

トランザクション NTFS