OneDrive « Fichiers à la demande » et applications métier ── les hypothèses que les espaces réservés brisent, et comment y faire face
· Mis à jour le: · Go Komura · OneDrive, Fichiers à la demande, KFM, Windows, Applications métier, Stockage cloud, Système de fichiers, Dépannage, Systèmes d'information
Historique des révisions (première version, publiée le 20 Aug 2026)
- Première publication
Citer cet article(DOI (archive enregistrée): 10.5281/zenodo.22176331)
Les DOI ci-dessous renvoient à des versions déjà archivées et peuvent différer du texte actuel. Pour citer le texte actuel, utilisez l’URL de cette page.
Go Komura (2026). OneDrive « Fichiers à la demande » et applications métier ── les hypothèses que les espaces réservés brisent, et comment y faire face. KomuraSoft LLC. https://comcomponent.com/fr/blog/onedrive-files-on-demand-business-apps/
- DOI (archive enregistrée)
- 10.5281/zenodo.22176331
- DOI (dernière version enregistrée)
- 10.5281/zenodo.22176332
« Une application métier ne peut pas lire un CSV enregistré sur le Bureau. » « Après un remplacement de PC, un import qui fonctionnait s’arrête avec « fichier introuvable ». » L’Explorateur montre le fichier, donc le réenregistrer ou redémarrer l’application ne rapproche parfois pas de la cause.
Ce qu’il faut alors vérifier séparément, c’est l’emplacement du fichier et si le contenu est présent en local. Le Known Folder Move (KFM) de OneDrive change l’emplacement du Bureau et de dossiers similaires, et les Fichiers à la demande laissent le contenu côté cloud jusqu’à ce qu’il soit nécessaire. Les deux posent problème lorsqu’une application métier suppose un fichier local traditionnel.12
Cet article s’adresse aux responsables informatiques des PME et aux développeurs d’applications Windows. Il commence par une procédure de triage des demandes. Il explique ensuite le fonctionnement des espaces réservés et la lecture des attributs, les pièges des applications métier, et ce que le développement et l’informatique peuvent chacun faire.
1. D’abord la conclusion ── vérifier séparément le « lieu » et le « contenu réel »
Qu’un fichier soit visible dans l’Explorateur ne garantit ni que l’application pointe vers le bon chemin, ni que le contenu puisse être lu tout de suite. On commence par séparer les deux points suivants.
| Hypothèse qui change | Fonction OneDrive | Effet sur l’application métier | Ce qu’il faut vérifier d’abord |
|---|---|---|---|
| Le chemin réel du Bureau et assimilés | KFM (Known Folder Move) | Une application qui utilise un chemin fixe ne retrouve plus le fichier après le déplacement | Le chemin dans les paramètres de l’application, et le chemin actuel du dossier connu |
| La présence du contenu en local | Fichiers à la demande | Le test d’existence passe, mais la lecture attend un téléchargement ou échoue | L’icône d’état, les attributs de fichier, et si OneDrive tourne |
On obtient les chemins déplacés par KFM via les API de dossiers connus. Pour les Fichiers à la demande, on examine d’abord les attributs et on n’ouvre que les fichiers dont le contenu est nécessaire. Les Fichiers à la demande sont activés par défaut dans l’application de synchronisation actuelle, et Microsoft recommande de les laisser activés. Un problème n’est pas une raison de tout désactiver dès le départ.134
Le palliatif est de définir les dossiers nécessaires au métier sur « Toujours conserver sur cet appareil » pour que le contenu réel soit présent en local. Corriger un mauvais chemin, toutefois, est un travail à part. La correction durable est que le côté application revoie les emplacements de stockage, la lecture et la surveillance, et que le côté informatique maintienne l’état nécessaire par épinglage et stratégie.
Dans le diagramme, un trait continu marque une relation qui vaut toujours et un trait pointillé une relation conditionnelle (les conditions figurent dans l’explication de chaque relation sur la page de détail). La liste complète des relations (16 au total, avec preuve et niveau de certitude) et les définitions des concepts principaux sont rassemblées sur la page de détail de la carte des connaissances (en japonais). Données : JSON-LD / Turtle
2. Trier une demande « le fichier ne se lit pas »
2.1. Vérifier six points, en partant du chemin
Plutôt que d’ouvrir tout de suite tous les fichiers du dossier cible, on enquête à partir du chemin et des métadonnées. C’est une procédure pour séparer le test d’existence et la lecture.
| # | Ce qu’il faut vérifier | Méthode | Ce que l’on apprend |
|---|---|---|---|
| 1 | Le chemin est-il sous OneDrive ? | Confirmer la racine de synchronisation avec echo %OneDrive% et la comparer au chemin cible. Vérifier aussi le chemin réel de « Bureau » dans la barre d’adresse de l’Explorateur |
Si KFM ou OneDrive est en cause |
| 2 | L’état du fichier | Contrôler U (en ligne uniquement), P (épinglé) et O avec attrib <chemin>. Regarder aussi « Taille sur le disque » dans les propriétés |
Si le contenu est local, ou s’il s’agit d’un espace réservé |
| 3 | Si OneDrive tourne | L’icône de la barre d’état (connexion, pause, erreur), Get-Process OneDrive |
Si une hydratation est possible. 0x8007016A signifie typiquement un arrêt ou une mauvaise configuration5 |
| 4 | Réseau | Proxy d’entreprise, bande passante, accessibilité du service OneDrive | Si un téléchargement est possible |
| 5 | Espace disque libre | L’espace libre du volume cible. Il existe aussi une stratégie où OneDrive bloque les téléchargements en cas de faible capacité | Une autre cause d’échec d’hydratation |
| 6 | L’enregistrement de l’échec | Noter le code d’erreur de l’application et l’heure, et les recouper avec l’affichage d’erreur de l’application de synchronisation | Si le problème est côté application ou côté OneDrive |
Selon que l’on utilise OneDrive personnel ou professionnel, les variables d’environnement OneDrive / OneDriveCommercial sont aussi un indice. Ne pas juger seulement d’après le nom affiché « Bureau » ; ce qui compte est de recouper avec le chemin que l’application a réellement référencé.
Si le chemin n’est pas sous OneDrive et que ce n’est pas un espace réservé, on cesse de ne suspecter que OneDrive et on passe à d’autres vérifications, dossiers partagés ou longueur de chemin. « Les pièges des lecteurs réseau et des chemins UNC » et « MAX_PATH et les pièges des chemins et noms de fichiers Windows » organisent ces autres familles de causes.
2.2. Séparer le palliatif de la confirmation que le métier peut reprendre
Si le fichier est en ligne uniquement et que le contenu ne se lit pas, on clique avec le bouton droit sur le dossier cible et on choisit « Toujours conserver sur cet appareil ». Pour basculer depuis un script, on utilise par exemple attrib +p -u <dossier> /s /d, qui épingle et retire en même temps l’attribut non épinglé.67
Ce qu’il faut confirmer ici, ce n’est pas que l’opération a été faite, mais que le téléchargement des fichiers nécessaires est terminé et qu’ils se lisent. L’épinglage est un attribut qui exprime l’intention de conserver en local ; il ne résout pas un OneDrive arrêté, un réseau défaillant ou un manque d’espace libre. On vérifie l’état de l’application de synchronisation et le contenu réel du fichier cible, puis on relance l’import.36
Après rétablissement, on passe aux mesures côté application du chapitre 6 si un chemin fixe ou le placement des données était en cause, et aux mesures côté informatique du chapitre 7 si la cause était la conservation du contenu réel ou la dispersion des paramètres des postes. Qu’un épinglage ait une fois fait marcher n’est pas la même chose qu’une conception qui ne récidivera pas.
3. Ce qui a changé ── le fonctionnement de KFM et des espaces réservés
3.1. KFM change le chemin réel du Bureau et assimilés
KFM (Known Folder Move) est la fonction que l’écran des paramètres OneDrive affiche comme « Sauvegarde », « Sauvegarder des dossiers importants », etc. Quand elle est activée, le contenu réel du Bureau, de Documents et d’Images se déplace sous OneDrive. Les chemins suivants sont des exemples. Les noms de dossiers réels et la racine de synchronisation varient selon l’environnement, donc n’incorporez pas ces chaînes telles quelles dans le code.1
| Emplacement vu par l’utilisateur | Chemin réel avant KFM | Chemin réel après KFM |
|---|---|---|
| Bureau | C:\Users\taro\Desktop |
C:\Users\taro\OneDrive\Bureau |
| Documents | C:\Users\taro\Documents |
C:\Users\taro\OneDrive\Documents |
| Images | C:\Users\taro\Pictures |
C:\Users\taro\OneDrive\Images |
Lors de la configuration initiale (OOBE) d’un nouveau PC, certaines configurations proposent la sauvegarde quand l’utilisateur se connecte avec un compte Microsoft ou un compte professionnel, et elle s’active en enchaînant. Dans une organisation, la stratégie KFMSilentOptIn peut aussi déplacer tout le monde sans action de l’utilisateur. Il ne faut pas supposer que seuls les utilisateurs qui ont configuré volontairement sont concernés.18
Le point délicat est que l’apparence de l’Explorateur change à peine. Une application qui utilise SHGetKnownFolderPath ou Environment.GetFolderPath de .NET obtient le chemin après déplacement. En revanche, une application qui a incorporé un chemin fixe tel que C:\Users\%USERNAME%\Desktop dans un fichier de paramètres ou dans le code continue de chercher à l’ancien emplacement.
Autrement dit, la prise en charge de KFM est d’abord un problème de résolution de chemin. Une fois le chemin correct après déplacement connu, on vérifie si le contenu de ce fichier est présent en local.
3.2. Les Fichiers à la demande séparent « être visible » et « avoir un contenu »
Dans un environnement où les Fichiers à la demande sont activés, les fichiers du périmètre de synchronisation s’affichent dans l’Explorateur, tandis que le contenu n’est téléchargé que lorsqu’il est nécessaire. Les fichiers créés sur un autre appareil ou sur le Web apparaissent aussi, comme espaces réservés en ligne uniquement.24
L’état se distingue d’après l’icône de l’Explorateur.9
| Icône | État | Contenu réel local |
|---|---|---|
| Icône nuage | En ligne uniquement | Aucun (espace réservé seulement) |
| Coche sur fond blanc | Disponible localement | Présent (mais peut être libéré automatiquement plus tard) |
| Coche blanche sur fond vert | Toujours conserver sur cet appareil (épinglé) | Présent (hors libération automatique) |
L’essentiel est que « disponible localement », l’état d’un fichier ouvert une fois, n’est pas la même chose que « Toujours conserver sur cet appareil », l’état d’un fichier épinglé. Le premier peut revenir en ligne uniquement par l’action « Libérer de l’espace » de l’utilisateur ou par le Contrôle d’espace de stockage. « On pouvait le lire le mois dernier » n’est pas une preuve que le contenu est encore là cette fois.210
stateDiagram-v2
accTitle: Les trois états des Fichiers à la demande et leurs transitions
accDescr: Un fichier en ligne uniquement devient disponible localement à l'ouverture, mais une action Libérer de l'espace ou le Contrôle d'espace de stockage le ramène en ligne uniquement, et seul un fichier épinglé est hors libération automatique
s1: En ligne uniquement (icône nuage)
s2: Disponible localement
s3: Épinglé (Toujours conserver sur cet appareil)
s1 --> s2: Ouvrir (hydratation)
s2 --> s1: Libérer de l'espace
s2 --> s1: Contrôle d'espace de stockage
s1 --> s3: Toujours conserver sur cet appareil
s2 --> s3: Toujours conserver sur cet appareil
s3 --> s2: Retirer l'épingle
Figure 1 : Contrairement à un fichier épinglé, un fichier seulement téléchargé une fois peut être libéré automatiquement.
3.3. À la lecture, l’API Cloud Files rappelle le contenu
Les Fichiers à la demande sont implémentés au-dessus de l’API Cloud Files, introduite dans Windows 10 version 1709. Côté système de fichiers, un minifilter nommé cldflt.sys (nom de service CldFlt, Windows Cloud Files Filter Driver) fait le travail, et OneDrive est l’un des fournisseurs de synchronisation qui utilisent cette API.116
Un espace réservé qui n’a pas encore de contenu est un point d’analyse qui ne détient que des métadonnées telles que le nom, la taille et les horodatages. Selon Microsoft, il utilise environ 1 Ko pour stocker l’en-tête du système de fichiers. Quand une application tente de lire le contenu, le minifilter demande au fournisseur de synchronisation de transférer les données, et la lecture avance une fois les données nécessaires arrivées. Ce rappel s’appelle hydratation, et libérer le contenu local pour ramener le fichier à un espace réservé s’appelle déshydratation.11
sequenceDiagram
accTitle: Hydratation à l'ouverture d'un espace réservé
accDescr: Quand une application ouvre et lit un espace réservé, le minifilter cldflt.sys détecte la demande, indique au fournisseur de synchronisation de transférer les données, attend la fin du téléchargement, puis laisse la lecture avancer
participant app as Application métier
participant flt as Minifilter cldflt.sys
participant sync as Fournisseur de synchronisation
app->>flt: Ouverture et demande de lecture
flt->>sync: Instruction de transfert de données
sync-->>flt: Téléchargement terminé
flt-->>app: La lecture avance
Figure 2 : Au milieu d’une lecture qui a l’air d’un fichier local, un téléchargement par le fournisseur de synchronisation s’intercale.
Pour des raisons de compatibilité, l’API Cloud Files masque le fait qu’il s’agit d’un point d’analyse à tous les processus autres que le moteur de synchronisation et ceux sous %systemroot%. Pour une application ordinaire, cela ressemble donc à un fichier ordinaire seulement un peu lent à ouvrir. Ne vous fiez pas seulement à du code qui traite spécialement les points d’analyse ; vérifiez les attributs du chapitre suivant.11 Le mécanisme des points d’analyse eux-mêmes est expliqué dans « Les profondeurs de l’E/S Windows (partie 5) — Structure interne de NTFS ».
Dans les propriétés de l’Explorateur, « Taille » affiche la taille réelle du fichier, tandis que « Taille sur le disque » est proche de 0. Avoir un nom de fichier et pouvoir obtenir une taille n’est pas la même chose que d’avoir le contenu en local.
4. Examiner l’état d’après les attributs de fichier
4.1. Distinguer l’état du contenu et l’intention de conservation
L’état d’un espace réservé est exposé comme attributs de fichier ordinaires. Les principaux sont les suivants.3
| Attribut | Valeur | Signification |
|---|---|---|
| FILE_ATTRIBUTE_OFFLINE | 0x00001000 | Les données ne sont pas immédiatement disponibles (attribut traditionnel de la gestion de stockage hiérarchique) |
| FILE_ATTRIBUTE_RECALL_ON_OPEN | 0x00040000 | Il n’y a pas de contenu physique local. N’apparaît que dans le résultat d’une énumération de répertoire |
| FILE_ATTRIBUTE_PINNED | 0x00080000 | L’utilisateur a l’intention de toujours conserver le fichier en local (épinglé) |
| FILE_ATTRIBUTE_UNPINNED | 0x00100000 | Le contenu n’a pas besoin d’être conservé en local (intention de passage en ligne uniquement) |
| FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS | 0x00400000 | Une partie ou la totalité du contenu n’est pas locale. Lire provoque un rappel depuis le distant |
OFFLINE et RECALL_ON_DATA_ACCESS sont des indices pour savoir si les données sont immédiatement disponibles. PINNED / UNPINNED, eux, expriment l’intention de conserver en local. Ne jugez pas d’après P ou U seuls que le téléchargement est terminé. De plus, RECALL_ON_OPEN est un attribut qui apparaît dans le résultat d’une énumération de répertoire, et toutes les API d’obtention d’attributs ne le rendent pas de la même façon.3
4.2. En confirmant et en changeant avec attrib, veiller à l’ordre de bascule
attrib <chemin> permet de confirmer les attributs. O signifie hors ligne, P épinglé, U non épinglé. Microsoft organise la correspondance entre les états OneDrive et les commandes de paramétrage comme suit.76
| État des Fichiers à la demande | Attribut | Commande de paramétrage |
|---|---|---|
| Toujours disponible (épinglé) | Pinned (P s’affiche) | attrib +p <chemin> |
| Disponible localement | Ni P ni U | attrib -p <chemin> |
| En ligne uniquement | Unpinned (U s’affiche) | attrib +u <chemin> |
Exécuter seulement attrib -p sur un fichier en ligne uniquement (U) laisse U en place et ne récupère pas le contenu. Même si l’on vise « disponible localement », l’ordre doit être d’abord +p pour rendre « toujours disponible » et déclencher le téléchargement, puis -p. Dans un script qui bascule un état existant, on retire aussi l’attribut opposé, comme dans attrib +p -u.6
4.3. Vérifier en masse l’état des CSV avec PowerShell
Regarder seulement les attributs du fichier permet d’enquêter sans hydrater le contenu. L’exemple suivant obtient le chemin de Documents via l’API des dossiers connus et vérifie les attributs des CSV.
function Test-CloudPlaceholder {
param([Parameter(Mandatory)][string]$Path)
$value = [int](Get-Item -LiteralPath $Path -Force).Attributes
[pscustomobject]@{
Path = $Path
Offline = ($value -band 0x00001000) -ne 0 # FILE_ATTRIBUTE_OFFLINE
RecallOnDataAccess = ($value -band 0x00400000) -ne 0 # Le contenu n'est pas entièrement local
Pinned = ($value -band 0x00080000) -ne 0 # Toujours conserver sur cet appareil
Unpinned = ($value -band 0x00100000) -ne 0 # En ligne uniquement
}
}
# Vérifier en masse les CSV sous le dossier Documents (le contenu n'est pas
# téléchargé). Résoudre le chemin avec l'API des dossiers connus. Écrire en dur
# le nom affiché « Documents » donne un chemin inexistant dans un environnement
# où le nom réel du dossier est localisé, ou selon la configuration KFM
Get-ChildItem ([Environment]::GetFolderPath('MyDocuments')) -Recurse -Filter *.csv |
ForEach-Object { Test-CloudPlaceholder $_.FullName } |
Where-Object RecallOnDataAccess |
Format-Table -AutoSize
Le cast vers [int] est nécessaire parce que l’énumération FileAttributes de .NET ne définit pas de noms tels que RECALL_ON_DATA_ACCESS. On convertit en nombre et on teste par opérations bit à bit. Les deux points importent : éviter d’écrire en dur un nom affiché tel que « Documents », et regarder les attributs sans lire le contenu.
5. Six problèmes qui apparaissent dans les applications métier
Un espace réservé n’est pas un fichier cassé. Il s’accorde toutefois mal avec des hypothèses telles que « un fichier qui existe se lit tout de suite » ou « un événement de surveillance local vient d’une action de l’utilisateur ».
| Symptôme | Ce qui se passe | Ce qu’il faut revoir |
|---|---|---|
| Il existe mais ne s’ouvre pas | Le rappel à la lecture échoue | OneDrive, le réseau, le traitement d’erreur |
| Un traitement par lots est extrêmement lent | Les fichiers dont le contenu a été lu se téléchargent les uns après les autres | Lecture de tout, calcul de hachage, sauvegarde |
| Seuls certains fichiers sont exclus | Un test d’égalité exacte des attributs, etc., ne prévoit pas les attributs supplémentaires | Code de test ou de modification d’attributs |
| Une masse d’événements de surveillance arrive | La synchronisation, les mises à jour d’attributs et les réécritures au même endroit produisent des notifications | FileSystemWatcher et les emplacements d’entrée et de sortie |
| Des erreurs de synchronisation ou des fichiers en double apparaissent | Un verrou exclusif ou des éditions sur plusieurs PC heurtent la synchronisation | Durée de verrou, placement des fichiers, traitement des doublons |
| Le trafic et l’usage disque augmentent la nuit | Un scan ou l’indexation rappelle le contenu | Produits de sécurité, indexeur de recherche |
5.1. Le test d’existence passe, mais la lecture échoue
Même pour un fichier en ligne uniquement, un test d’existence équivalent à File.Exists() et l’obtention des attributs et de la taille peuvent réussir. L’hydratation devient nécessaire dès que l’on commence à lire le contenu, donc un OneDrive arrêté, déconnecté ou en pause, ou un réseau défaillant, se manifeste comme un échec de lecture. Pour un gros fichier, l’attente du téléchargement peut aussi devenir un délai d’expiration de l’application.
Parmi les erreurs liées aux fichiers cloud, on trouve 0x8007016A (« Le fournisseur de fichiers cloud n’est pas en cours d’exécution »), qui correspond à ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING. Ne les rassemblez pas sous « fichier absent » ; enregistrez le code d’erreur d’origine et le chemin cible.5
5.2. Un traitement par lots déclenche le téléchargement de tout
Pointer vers un dossier sous OneDrive un lot qui lit tous les fichiers d’un dossier, un calcul de hachage, une recherche plein texte ou une sauvegarde maison, et chaque fichier dont le contenu est lu s’hydrate les uns après les autres. Pour un dossier de plusieurs Go, non seulement le temps de traitement, mais aussi le trafic et la consommation de disque local augmentent. Sur un PC à faible capacité, cela mène à une autre panne par manque d’espace libre.
Quand une application rappelle des fichiers que l’utilisateur n’a pas ouvert explicitement, Windows peut afficher une notification et proposer à l’utilisateur de bloquer. Une fois bloquée, cette application échoue aux téléchargements suivants. Le déblocage se fait dans « Téléchargements automatiques de fichiers » des paramètres. Quand « cela n’échoue que sur un PC particulier », vérifiez aussi cet état.11
5.3. Un code qui ne prévoit pas les attributs supplémentaires se trompe
Un test d’égalité exacte tel que attributes == FileAttributes.Archive exclut comme « inattendu » tout fichier auquel d’autres attributs se sont ajoutés. Il y a aussi des cas où un outil de sauvegarde ou de synchronisation interprète OFFLINE comme « déjà déposé sur bande » et saute le fichier, ou, à l’inverse, rappelle des fichiers dont il n’avait pas besoin. Un contrôle en lecture seule ou un changement du bit d’archive ne doit pas non plus casser la combinaison des autres attributs.
Le guide Microsoft destiné aux minifilters contient une mise en garde contre l’émission de lectures et d’écritures imprudentes vers un fichier qui porte RECALL_ON_DATA_ACCESS. Les contraintes pour un pilote noyau et une implémentation en mode utilisateur ne sont pas identiques, mais le point que toucher le contenu entraîne un coût de rappel est à avoir présent à l’esprit aussi dans une application métier.12
5.4. FileSystemWatcher capte aussi l’activité de synchronisation
Quand on surveille un dossier sous OneDrive avec FileSystemWatcher, des événements peuvent se produire non seulement pour les actions de l’utilisateur, mais aussi pour la synchronisation de changements venus d’autres appareils, et pour les mises à jour d’attributs ou de taille par hydratation et déshydratation.
De plus, réécrire le résultat d’import dans le même dossier crée une boucle : écriture, chargement, mise à jour d’attributs, nouvel événement.
flowchart TB
accTitle: Boucle de notifications de changement par surveillance et réécriture
accDescr: Quand une application de surveillance qui a reçu un événement de changement réécrit le résultat d'import dans le même dossier, le chargement et la mise à jour d'attributs de l'application de synchronisation relancent un événement, ce qui devient une boucle, une tempête de notifications de changement
ev["Événement de changement"] --> proc["L'application de surveillance importe"]
proc --> write["Réécriture dans le même dossier"]
write --> up["L'application de synchronisation charge"]
up --> attr["Les attributs ou la taille sont mis à jour"]
attr --> ev
sync["Synchronisation de changements d'autres appareils"] -.-> ev
Figure 3 : Réécrire le résultat d’import vers la cible surveillée peut entraîner l’activité de l’application de synchronisation dans une répétition de notifications.
Pourquoi il faut un filtrage des événements et une confirmation du contenu réel est traité dans « Guide pratique de FileSystemWatcher ». Sous OneDrive, une conception qui ne lit pas une notification comme « un fichier importable vient d’arriver » devient encore plus importante.
5.5. Un verrou exclusif et des éditions sur plusieurs PC heurtent la synchronisation
Tant qu’une application métier tient un fichier ouvert avec un verrou exclusif, l’application de synchronisation ne peut ni le charger ni le mettre à jour. Une conception qui laisse longtemps ouvert un .accdb Access, un fichier de données dans un format propriétaire ou un journal, une fois le fichier placé sous OneDrive, fait des erreurs de synchronisation l’état normal.
Quand le même fichier est édité sur plusieurs PC, des copies de conflit telles qu’un fichier avec le nom du PC ou un « copie de » peuvent être générées pour conserver les deux versions. Un import qui suppose « un dossier, un fichier » se trompe sur ces doublons. Pour la conception des verrous, voir aussi « Les bases du contrôle d’exclusion pour l’intégration par fichiers ».
5.6. Les scans et l’indexeur de recherche rappellent aussi le contenu
Ce n’est pas seulement l’application métier qui lit le contenu. Un scan complet d’un antivirus ou l’indexeur de recherche déclenchent aussi une hydratation s’ils accèdent au contenu d’un espace réservé.
Le guide de planification d’Azure File Sync explique que Microsoft Defender et assimilés sautent les fichiers portant l’attribut RECALL_ON_DATA_ACCESS lors d’un scan à la demande. Cela, toutefois, est une prise en charge côté produit, et tous les produits de sécurité ne font pas le même effort. Quand « le réseau et le disque sont saturés à chaque scan nocturne » ou que « les fichiers passés en ligne uniquement sont tous matérialisés le lendemain matin », examinez aussi le comportement du scan.13
6. Mesures côté développement ── ne pas ouvrir à la légère, et séparer l’emplacement de stockage
6.1. Vérifier les attributs à l’énumération, et ne lire que les fichiers dont le contenu est nécessaire
La ligne de base est de traiter un espace réservé comme « un fichier qui a un coût de rappel ». Pour un traitement non indispensable tel que la collecte de journaux, le calcul de hachage ou la génération d’aperçu, on se donne l’option de sauter.
L’exemple suivant vérifie les attributs avant d’importer un CSV.
// Définir en nombres les valeurs que FileAttributes de .NET ne définit pas
const FileAttributes RecallOnDataAccess = (FileAttributes)0x00400000;
const FileAttributes RecallOnOpen = (FileAttributes)0x00040000;
static bool IsCloudPlaceholder(FileAttributes attributes) =>
(attributes & (RecallOnDataAccess | RecallOnOpen | FileAttributes.Offline)) != 0;
foreach (var file in new DirectoryInfo(watchFolder).EnumerateFiles("*.csv"))
{
if (IsCloudPlaceholder(file.Attributes))
{
log.Warn($"{file.Name} est en ligne uniquement, saut de ce passage");
continue;
}
Import(file.FullName);
}
Cet exemple prend pour politique de ne pas traiter cette fois les fichiers qui peuvent être en ligne uniquement. Il ne faut pas considérer comme traités, avec seulement un avertissement dans le journal, des fichiers que le métier doit absolument importer. On décide ensemble d’une exploitation qui sécurise le contenu réel à l’avance, et du traitement des échecs de lecture.
6.2. Ne pas prendre FILE_FLAG_OPEN_NO_RECALL pour une garantie de « pas de communication »
FILE_FLAG_OPEN_NO_RECALL de CreateFile est un indicateur qui exprime l’intention de laisser les données demandées du côté distant, sans les ramener vers le stockage local. Ce n’est pas un indicateur qui interdit le transfert de données lui-même, nécessaire pour lire le contenu.14
Dans une enquête où l’on veut éviter la bande passante et l’attente, on se contente des métadonnées telles que attributs, taille et horodatages. On choisit des méthodes qui ne demandent pas d’accès en lecture : utiliser les informations du résultat d’énumération, ou, au besoin, ouvrir avec un masque d’accès 0 pour obtenir les attributs.14
6.3. Inclure le placement des données et les consignes en cas d’échec dans la spécification
Dans un environnement KFM, « Documents » peut aussi se trouver sous OneDrive. On place les paramètres, la base de données et les fichiers de travail de l’application dans un emplacement adapté à l’usage, tel que %ProgramData% ou %LocalAppData%, et on ne choisit pas à la légère le Bureau ou Documents comme emplacement de sauvegarde ou d’import par défaut. Les décisions concrètes sont rassemblées dans « Comment choisir où une application Windows stocke ses données locales ».
Même lorsque l’utilisateur peut choisir l’emplacement de sauvegarde, on décide à l’avance du comportement s’il choisit un emplacement sous OneDrive. On inclut dans la spécification des décisions telles qu’avertir d’après la racine de synchronisation révélée par les variables d’environnement OneDrive / OneDriveCommercial, et refuser d’y placer des fichiers de verrou ou une base.
Quand une lecture échoue, on affiche et on enregistre, en plus du chemin cible et du code d’erreur, le fait que le chemin est sous OneDrive si on peut le déterminer. Pouvoir seulement indiquer « vérifiez l’état de OneDrive » quand 0x8007016A ou assimilé est détecté facilite déjà, pour le terrain et le support, une enquête selon la même procédure.
7. Mesures côté informatique ── maintenir l’état par épinglage et stratégie
7.1. N’épingler que les dossiers nécessaires
Avant de désactiver les Fichiers à la demande pour tout le monde, on définit les dossiers que les applications métier lisent sur « Toujours conserver sur cet appareil ». Quand on utilise attrib +p -u <dossier> /s /d lors du kitage, on confirme que le téléchargement est terminé avant de livrer le poste au métier.64
« L’avoir ouvert une fois » ne suffit pas à empêcher une libération automatique plus tard. Le point est d’épingler les emplacements nécessaires à l’échelle du dossier, et d’inclure cet état dans les procédures de support.
7.2. Configurer KFM et les Fichiers à la demande de façon volontaire
Pour éviter « on s’est rendu compte que c’était activé », on encadre les paramètres par stratégie de groupe ou Intune. Comme il existe aussi des stratégies qui interdisent de revenir en arrière, on vérifie non seulement l’écran du poste, mais aussi les paramètres appliqués par l’organisation.81
| Objectif | Stratégie (valeur de registre) | Effet |
|---|---|---|
| Encadrer les Fichiers à la demande | Use OneDrive Files On-Demand (FilesOnDemandEnabled) | Activé : les nouveaux utilisateurs sont en ligne uniquement par défaut. Désactivé : synchronisation intégrale traditionnelle |
| Appliquer KFM pour tout le monde | Silently move Windows known folders to OneDrive (KFMSilentOptIn) | Déplace le Bureau et assimilés sans action de l’utilisateur |
| Interdire KFM | Prevent users from moving their Windows known folders to OneDrive (KFMBlockOptIn) | Interdit le déplacement des dossiers connus |
| Interdire l’annulation de KFM | Prevent users from redirecting their Windows known folders to their PC (KFMBlockOptOut) | Interdit l’annulation par l’utilisateur |
| Réduire la capacité des sites d’équipe | Convert synced team site files to online-only (DehydrateSyncedTeamSites) | Passe les sites d’équipe synchronisés en ligne uniquement (attention : cela agit dans le sens de la disparition du contenu réel) |
DehydrateSyncedTeamSites est une stratégie qui agit dans le sens de réduire le contenu réel des sites d’équipe synchronisés. Quand des fichiers nécessaires reviennent à l’icône nuage, on vérifie aussi ces paramètres d’organisation, pas seulement l’action « Libérer de l’espace » de l’utilisateur.8
7.3. Vérifier le Contrôle d’espace de stockage et le coût d’une synchronisation intégrale
Le Contrôle d’espace de stockage (Storage Sense) a une fonction qui ramène en ligne uniquement les fichiers cloud non ouverts depuis un nombre de jours donné. Le nombre de jours se configure avec ConfigStorageSenseCloudContentDehydrationThreshold, et la valeur par défaut 0 de cette stratégie signifie de ne pas ramener automatiquement. L’utilisateur peut toutefois l’avoir activé dans l’écran des paramètres, ou l’organisation l’avoir configuré pour des postes à faible capacité.10
Ce qui est concerné, ce sont les fichiers « disponibles localement » qui n’ont pas été explicitement épinglés. Les fichiers épinglés sont hors libération automatique, donc quand « on pouvait ouvrir jusqu’à la semaine dernière mais l’icône nuage est revenue », on vérifie si l’attribut P était vraiment posé.4
Désactiver FilesOnDemandEnabled ramène à la synchronisation intégrale traditionnelle, mais la consommation de disque et la charge de bande passante de la première synchronisation augmentent. Microsoft recommande de laisser la fonction activée. Traitez la désactivation comme une mesure limitée, après avoir vérifié le volume de données et la capacité disque des utilisateurs concernés.84
On intègre dans le modèle de demande la séquence du chapitre 2 : chemin → attributs → OneDrive en cours d’exécution → réseau → espace libre → enregistrement. Ainsi, même quand les responsables changent, on enquête dans le même ordre, au lieu de basculer les paramètres au hasard.
8. Résumé
Les pannes de fichiers dans un environnement OneDrive se clarifient une fois que l’on sépare « l’emplacement a-t-il changé ? » et « un rappel du contenu est-il nécessaire ? ». On traite KFM par la résolution de chemin via les API de dossiers connus, et les Fichiers à la demande par une conception qui vérifie les attributs puis ne lit que le contenu nécessaire.
Ensuite, on revoit comment des traitements tels que la réécriture vers une cible surveillée, un verrou exclusif de longue durée et un scan intégral se superposent à la synchronisation. On sépare les données internes de l’application de OneDrive, et on maintient le contenu réel des fichiers nécessaires au métier par épinglage et stratégie. Ce partage des rôles est la base pour ne pas s’arrêter à un palliatif.
La prochaine fois que l’on reçoit une demande « le fichier est là mais ne se lit pas », on commence par se reposer la question.
L’application regarde-t-elle l’emplacement correct actuel ? Et le contenu de ce fichier est-il vraiment présent en local ?
Articles connexes
- Les profondeurs de l’E/S Windows (partie 5) — Structure interne de NTFS : comprendre le système de fichiers à travers la MFT
- Guide pratique de FileSystemWatcher - Gérer les événements manqués et les doublons
- Les pièges des lecteurs réseau et des chemins UNC — Travailler avec un serveur de fichiers (dossier partagé) depuis une application métier
- Les bases du contrôle d’exclusion pour l’intégration par fichiers - bonnes pratiques de verrouillage de fichiers et de claim atomique
- Comment choisir où une application Windows stocke ses données locales — tableau de décision pour SQLite / JSON / Registre / Access
- MAX_PATH et les pièges des chemins et noms de fichiers Windows — la limite de 260 caractères, les noms réservés, les points de fin et la casse
Domaines de conseil associés
KomuraSoft LLC prend en charge l’investigation des pannes d’applications métier liées à OneDrive et au stockage cloud, telles que « un import qui fonctionnait ne marche plus après un remplacement de PC » ou « le fichier ne se lit que sur un PC particulier », la conception et la correction du traitement de fichiers et de la surveillance qui tiennent compte des espaces réservés, et la revue de la conception des emplacements de sauvegarde dans un environnement KFM et Fichiers à la demande. Commencer par le triage du phénomène convient tout à fait ; n’hésitez pas à nous consulter.
- Développement d’applications Windows
- Analyse des bugs et des causes
- Conseil technique et revue de conception
- Contact
Références
-
Microsoft Learn, Redirect and move Windows known folders to OneDrive. Que KFM déplace le Bureau, Documents et Images sous OneDrive, et les stratégies d’invite, d’application silencieuse, d’interdiction d’annulation et d’interdiction de déplacement. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Support, Save disk space with OneDrive Files On-Demand for Windows. Les trois états des Fichiers à la demande et les actions « Toujours conserver sur cet appareil » et « Libérer de l’espace ». ↩ ↩2 ↩3
-
Microsoft Learn, File Attribute Constants. Les définitions et valeurs des attributs FILE_ATTRIBUTE_OFFLINE, RECALL_ON_OPEN, RECALL_ON_DATA_ACCESS, PINNED et UNPINNED. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Recommended sync app configuration. Que les Fichiers à la demande sont activés par défaut et recommandés de rester activés, et que le Contrôle d’espace de stockage nettoie les « fichiers disponibles localement qui ne sont pas épinglés ». ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Error 0x8007016a when copying files in OneDrive. Que l’erreur 0x8007016A, « The cloud file provider is not running », survient en cas de mauvaise configuration ou d’arrêt de OneDrive, et la procédure de résolution. ↩ ↩2
-
Microsoft Learn, Query and set Files On-Demand states in Windows. La confirmation des états des Fichiers à la demande avec attrib et le paramétrage par +p, -p et +u, et le service CldFlt. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, attrib. La syntaxe de la commande attrib et les indicateurs d’attributs, dont O (hors ligne), P (épinglé) et U (non épinglé). ↩ ↩2
-
Microsoft Learn, IT Admins - Use OneDrive policies to control sync settings. Les stratégies pour configurer l’application de synchronisation OneDrive par GPO et Intune, telles que FilesOnDemandEnabled, KFMSilentOptIn, KFMBlockOptIn, KFMBlockOptOut et DehydrateSyncedTeamSites. ↩ ↩2 ↩3 ↩4
-
Microsoft Support, What do the OneDrive icons mean?. Le sens des icônes d’état affichées dans l’Explorateur, telles que le nuage et les coches. ↩
-
Microsoft Learn, Policy CSP - Storage. Que le Contrôle d’espace de stockage peut passer en ligne uniquement les fichiers cloud non ouverts depuis un nombre de jours donné, la valeur par défaut 0 (ne pas ramener automatiquement) et la configuration de 0 à 365 jours. ↩ ↩2
-
Microsoft Learn, Build a Cloud Sync Engine that Supports Placeholder Files. Vue d’ensemble de l’API Cloud Files ; qu’un espace réservé ne détient qu’environ 1 Ko de métadonnées et s’hydrate automatiquement à l’ouverture ; que le point d’analyse est masqué aux processus autres que le moteur de synchronisation et ceux sous %systemroot% ; et la notification toast et le blocage pour une hydratation en arrière-plan. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Handling placeholders. Que les espaces réservés doivent porter FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS, et que des lectures et écritures imprudentes vers un fichier portant cet attribut entraînent une hydratation inutile ou une corruption de données. ↩
-
Microsoft Learn, Plan for an Azure File Sync deployment. Qu’un scan antivirus peut provoquer le rappel de fichiers portant l’attribut RECALL_ON_DATA_ACCESS, et que Microsoft Defender et assimilés sautent les fichiers portant cet attribut lors d’un scan à la demande. ↩
-
Microsoft Learn, CreateFileW function (fileapi.h). Que FILE_FLAG_OPEN_NO_RECALL est un indicateur selon lequel les données demandées « doivent rester du côté distant et ne pas être transférées vers le stockage local » (il n’empêche pas l’obtention des données elle-même), et l’obtention d’attributs en ouvrant avec un masque d’accès 0. ↩ ↩2
Articles associés
Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.
VSS (cliché instantané de volume) : fonctionnement et pratique — Pourquoi peut-on sauvegarder des fichiers en cours d'utilisation ?
Un fichier en cours d'utilisation se heurte à une violation de partage, et pourtant les logiciels de sauvegarde le copient. Rôles du dema...
Windows Defender Firewall et les applications métier — enregistrer les règles entrantes depuis l'installateur
Quand une application métier Windows ne communique pas chez le client, trier règles entrantes, écoute, profils et stratégie gérée. Concep...
Examiner les journaux d'événements en pratique avec Get-WinEvent — La rapidité du filtrage détermine le temps d'investigation
Ce guide présente comment rendre plus efficace l'investigation des journaux d'événements Windows avec PowerShell. Il explique pourquoi fi...
Comment un raccourci Windows retrouve-t-il un fichier déplacé ? — L'emplacement d'un fichier et son identité sont deux choses distinctes
Pourquoi un raccourci ouvre-t-il encore un fichier déplacé ? Windows peut retrouver la cible à partir d'identifiants de suivi et des cara...
L'ordre de la résolution de noms sous Windows — hosts, le cache DNS, LLMNR/mDNS et DoH
Que la réponse vienne de hosts, du cache DNS, du serveur DNS ou de LLMNR/mDNS change le résultat, et explique pourquoi certains PC échoue...
Sujets associés
Ces pages replacent le sujet dans un contexte plus large de services et de décisions.
Thèmes techniques Windows
Portail des sujets sur le développement Windows, l'analyse des incidents et la valorisation des actifs existants.
Services liés à ce sujet
Cet article est directement lié aux services suivants.
Développement d'applications Windows
Applications métier, intégration d'équipements et outils de communication, des besoins au développement.
Questions fréquentes
Questions souvent posées lors d’une consultation sur le sujet de cet article.
- Une application métier dit « fichier introuvable » et ne peut pas lire un CSV posé sur le Bureau. Pourquoi ?
- Dans bien des cas, le dossier Bureau lui-même a été déplacé sous C:\Users\<nom d'utilisateur>\OneDrive\Bureau par le Known Folder Move (KFM) de OneDrive, ou le fichier est devenu un espace réservé en ligne uniquement. Une application qui suppose un chemin fixe tel que C:\Users\<nom d'utilisateur>\Desktop ne retrouve plus le fichier après le déplacement. Même si le chemin est correct, un fichier en ligne uniquement peut échouer à s'ouvrir lorsque OneDrive est arrêté ou que le réseau est en mauvais état. Vérifiez d'abord si le chemin cible est sous OneDrive, et contrôlez avec la commande attrib si U (en ligne uniquement) est posé. En palliatif, vous pouvez sécuriser le contenu réel en local avec « Toujours conserver sur cet appareil » dans le menu contextuel.
- Un programme peut-il dire si un fichier est en ligne uniquement ?
- Oui. Un espace réservé en ligne uniquement porte des attributs tels que FILE_ATTRIBUTE_OFFLINE et FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS (0x00400000), de sorte que vous pouvez juger l'état d'après les attributs du fichier sans télécharger le contenu. Obtenir les attributs ou énumérer un dossier ne provoque pas d'hydratation (téléchargement). En .NET, certaines valeurs ne sont pas définies sur FileAttributes : on convertit en entier et on teste par opérations bit à bit. Si vous devez vraiment ouvrir sans lire le contenu, un moyen tel que FILE_FLAG_OPEN_NO_RECALL de CreateFile est aussi disponible.
- Désactiver les Fichiers à la demande résout-il le problème ?
- Traitez la désactivation comme un dernier recours. La désactiver télécharge localement tous les fichiers du périmètre de synchronisation, si bien que la capacité disque et la charge réseau de la première synchronisation deviennent importantes, et Microsoft recommande aussi de la laisser activée. En pratique, il est plus souple de n'appliquer « Toujours conserver sur cet appareil » (épingler) qu'aux dossiers qu'une application métier lit. Plus fondamentalement, la correction fiable consiste à concevoir pour que le dossier de données et le dossier d'import de l'application ne soient pas sous la gestion de OneDrive.
- J'ai défini « Toujours conserver sur cet appareil », mais certains fichiers finissent par revenir à une icône nuage. Pourquoi ?
- Vérifiez d'abord avec la commande attrib que le fichier a vraiment l'épingle (attribut P). Un fichier épinglé est hors de la conversion automatique en ligne uniquement du Contrôle d'espace de stockage, mais un fichier seulement « disponible localement » parce que quelqu'un l'a ouvert, sans épingle, peut être renvoyé en ligne uniquement après un délai selon les paramètres et la stratégie du Contrôle d'espace de stockage. L'action « Libérer de l'espace » de l'utilisateur, et une stratégie qui rend les fichiers de sites d'équipe en ligne uniquement (DehydrateSyncedTeamSites), ramènent aussi l'icône nuage. Pour les dossiers qui doivent rester locaux pour le métier, opérez en épinglant à l'échelle du dossier.
Profil de l’auteur
Page de présentation de l’auteur de l’article.
Go Komura
Représentant de KomuraSoft LLC
Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.