次の方法で共有


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

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

0x200

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

トランザクション操作の

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

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

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

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

手記

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

必要条件

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

関連項目

ファイル属性定数

ファイル管理機能の

GetFileAttributes

SetFileAttributesTransacted の

シンボリック リンク の

トランザクション NTFS の