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: · · 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

Les trois états des Fichiers à la demande et leurs transitionsUn 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 automatiqueOuvrir (hydratation)Libérer de l'espaceContrôle d'espace de stockageToujours conserver sur cet appareilToujours conserver sur cet appareilRetirer l'épingleEn ligne uniquement (icône nuage)Disponible localementÉpinglé (Toujours conserver sur cet appareil)

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

Hydratation à l'ouverture d'un espace réservé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 avancerFournisseur de synchronisationMinifilter cldflt.sysApplication métierFournisseur de synchronisationMinifilter cldflt.sysApplication métierOuverture et demande de lectureInstruction de transfert de donnéesTéléchargement terminé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.

Boucle de notifications de changement par surveillance et réécritureQuand 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Événement de changementL'application de surveillance importeRéécriture dans le même dossierL'application de synchronisation chargeLes attributs ou la taille sont mis à jourSynchronisation de changements d'autres appareils

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

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.

Références

  1. 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

  2. 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

  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

  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

  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

  6. 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

  7. 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

  8. 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

  9. 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. ↩

  10. 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

  11. 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

  12. 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. ↩

  13. 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. ↩

  14. 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 récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

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.

Retour au blog