Partager via


SetFileAttributesW, fonction (fileapi.h)

Définit les attributs d’un fichier ou d’un répertoire.

Pour effectuer cette opération en tant qu’opération transactionnelle, utilisez la fonction SetFileAttributesTransacted.

Syntaxe

BOOL SetFileAttributesW(
  [in] LPCWSTR lpFileName,
  [in] DWORD   dwFileAttributes
);

Paramètres

[in] lpFileName

Nom du fichier dont les attributs doivent être définis.

Par défaut, le nom est limité à MAX_PATH caractères. Pour étendre cette limite à 32 767 caractères larges, ajoutez « \\ ?\ » au chemin d’accès. Pour plus d’informations, consultez nommage des fichiers, des chemins d’accès et des espaces de noms.

Pourboire

À compter de Windows 10, version 1607, vous pouvez choisir de supprimer la limitation MAX_PATH sans précéder « \\ ?\ ». Pour plus d’informations, consultez la section « Limite maximale de longueur de chemin » de noms, fichiers, chemin s et espaces de noms.

[in] dwFileAttributes

Attributs de fichier à définir pour le fichier.

Ce paramètre peut être une ou plusieurs valeurs, combinées à l’aide de l’opérateur OR au niveau du bit. Toutefois, toutes les autres valeurs remplacent FILE_ATTRIBUTE_NORMAL.

Tous les attributs ne sont pas pris en charge par cette fonction. Pour plus d’informations, consultez la section Remarques.

Voici une liste des valeurs d’attribut prises en charge.

Valeur Signification
FILE_ATTRIBUTE_ARCHIVE
32 (0x20)
Fichier ou répertoire qui est un fichier ou un répertoire d’archivage. Les applications utilisent généralement cet attribut pour marquer les fichiers pour la sauvegarde ou la suppression.
FILE_ATTRIBUTE_HIDDEN
2 (0x2)
Le fichier ou le répertoire est masqué. Il n’est pas inclus dans une liste d’annuaires ordinaire.
FILE_ATTRIBUTE_NORMAL
128 (0x80)
Fichier qui n’a pas d’autres attributs définis. Cet attribut est valide uniquement lorsqu’il est utilisé seul.
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
8192 (0x2000)
Le fichier ou le répertoire ne doit pas être indexé par le service d’indexation de contenu.
FILE_ATTRIBUTE_OFFLINE
4096 (0x1000)
Les données d’un fichier ne sont pas disponibles immédiatement. Cet attribut indique que les données de fichier sont physiquement déplacées vers le stockage hors connexion. Cet attribut est utilisé par le stockage distant, qui est le logiciel de gestion de stockage hiérarchique. Les applications ne doivent pas modifier arbitrairement cet attribut.
FILE_ATTRIBUTE_READONLY
1 (0x1)
Fichier en lecture seule. Les applications peuvent lire le fichier, mais ne peuvent pas y écrire ou le supprimer. Cet attribut n’est pas honoré sur les répertoires. Pour plus d’informations, consultez « Vous ne pouvez pas afficher ou modifier les attributs système de dossiers dans Windows Server 2003, windows XP ou Windows Vista.
FILE_ATTRIBUTE_SYSTEM
4 (0x4)
Fichier ou répertoire dont le système d’exploitation utilise une partie ou utilise exclusivement.
FILE_ATTRIBUTE_TEMPORARY
256 (0x100)
Fichier utilisé pour le stockage temporaire. Les systèmes de fichiers évitent d’écrire des données dans le stockage en masse si la mémoire du cache suffisante est disponible, car en général, une application supprime un fichier temporaire une fois le handle fermé. Dans ce scénario, le système peut tout à fait éviter d’écrire les données. Sinon, les données sont écrites après la fermeture du handle.

Valeur de retour

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Le tableau suivant décrit comment définir les attributs qui ne peuvent pas être définis à l’aide de SetFileAttributes. Pour obtenir la liste complète de toutes les valeurs d’attribut de fichier et de leurs descriptions, consultez constantes d’attribut de fichier.

Attribut Guide pratique pour définir
FILE_ATTRIBUTE_COMPRESSED

0x800

Pour définir l’état de compression d’un fichier, utilisez la fonction DeviceIoControl avec l’opération de FSCTL_SET_COMPRESSION.
FILE_ATTRIBUTE_DEVICE

0x40

Réservé; n’utilisez pas.
FILE_ATTRIBUTE_DIRECTORY

0x10

Les fichiers ne peuvent pas être convertis en répertoires. Pour créer un répertoire, utilisez la fonction CreateDirectory ou CreateDirectoryEx.
FILE_ATTRIBUTE_ENCRYPTED

0x4000

Pour créer un fichier chiffré, utilisez la fonction CreateFile avec l’attribut FILE_ATTRIBUTE_ENCRYPTED. Pour convertir un fichier existant en fichier chiffré, utilisez la fonction EncryptFile.
FILE_ATTRIBUTE_REPARSE_POINT

0x400

Pour associer un point d’analyse à un fichier ou un répertoire, utilisez la fonction DeviceIoControl avec l’opération de FSCTL_SET_REPARSE_POINT.
FILE_ATTRIBUTE_SPARSE_FILE

0x200

Pour définir l’attribut éparse d’un fichier, utilisez la fonction DeviceIoControl avec l’opération de FSCTL_SET_SPARSE.
 

opérations transactionnelles

Si un fichier est ouvert pour modification dans une transaction, aucun autre thread ne peut ouvrir le fichier pour modification tant que la transaction n’est pas validée. Par conséquent, si un thread traité ouvre d’abord le fichier, tous les threads suivants qui essaient de modifier le fichier avant que la transaction ne soit validée reçoit une violation de partage. Si un thread non traité modifie le fichier avant que le thread transactionnel ne le fasse et que le fichier est toujours ouvert lorsque la transaction tente de l’ouvrir, la transaction reçoit l’erreur ERROR_TRANSACTIONAL_CONFLICT.

Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Supporté
Protocole SMB (Server Message Block) 3.0 Oui
Basculement transparent SMB 3.0 (TFO) Oui
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Oui
Cluster Shared Volume File System (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

Exemples

Pour obtenir un exemple, consultez récupération et modification des attributs de fichier.

Note

L’en-tête fileapi.h définit SetFileAttributes en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête fileapi.h (include Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

constantes d’attribut de fichier

fonctions de gestion de fichiers

GetFileAttributes

SetFileAttributesTransacted

liens symboliques

NTFS transactionnel