OneDrive « Fichiers à la demande » et applications métier — les hypothèses que les espaces réservés brisent, et comment y faire face
· Go Komura · OneDrive, Fichiers à la demande, KFM, Windows, Applications métier, Stockage cloud, Système de fichiers, Dépannage, Systèmes d'information
« Une application métier ne peut pas lire un CSV que j’ai enregistré sur le Bureau. » « Un import qui fonctionnait échoue avec “fichier introuvable” après un remplacement de PC. » « L’Explorateur montre le fichier, mais l’ouvrir depuis l’application produit une erreur. » — Ces dernières années, ce type de consultation de clients est devenu un classique.
Quand on enquête, la cause n’est souvent pas un bogue d’application mais la « sauvegarde automatique du Bureau et des Documents » de OneDrive (Known Folder Move, KFM) et les « Fichiers à la demande ». Le vrai Bureau a été déplacé vers C:\Users\<nom>\OneDrive\Desktop, et une partie des fichiers que l’on y voit sont des « espaces réservés » sans contenu local. Les utilisateurs et l’informatique continuent d’utiliser le PC sans remarquer ce changement.
Autrement dit, l’hypothèse implicite d’une application métier selon laquelle « le fichier est sur le disque local » a, sans que personne ne l’ait décidé, été remplacée par l’hypothèse que « le fichier est dans le cloud, et localement il n’y a que l’apparence ». Destiné aux responsables informatiques des PME et aux développeurs d’applications Windows, cet article organise, à partir des sources primaires Microsoft Learn, le fonctionnement des espaces réservés, la façon de juger l’état d’après les attributs de fichier, les pièges typiques dans lesquels une application métier marche, ce que le côté développement et le côté informatique peuvent faire, et une procédure de triage lorsque l’on vous dit « le fichier ne s’ouvre pas ».
flowchart TB
accTitle: Remplacement de l'hypothèse implicite d'une application métier
accDescr: L'hypothèse implicite d'une application métier que le fichier est sur le disque local a, sans que personne ne l'ait décidé, été remplacée par l'hypothèse que le contenu réel est dans le cloud et que localement il n'y a que l'apparence
before["L'hypothèse implicite traditionnelle"] --> b1["Contenu réel sur le disque local"]
after["L'hypothèse remplacée"] --> a1["Le contenu réel est dans le cloud"]
a1 --> a2["Localement il n'y a que l'apparence"]
a2 -.-> note["Un espace réservé"]
Figure 1 : L’hypothèse que « le contenu réel est local » a, sans que personne ne l’ait décidé, été remplacée par « le contenu réel est dans le cloud ; localement il n’y a que l’apparence ».
1. D’abord la conclusion
- Le Bureau, Documents et Images peuvent avoir été déplacés sous
C:\Users\<nom>\OneDrive\par le KFM. Cela tend à s’activer lors de la configuration initiale d’un nouveau PC, et une organisation peut aussi l’appliquer en masse par stratégie. Une application qui suppose un chemin fixe casse ici.1 - Les Fichiers à la demande sont activés par défaut dans l’application de synchronisation actuelle. Les fichiers créés sur un autre appareil ou sur le Web apparaissent comme espaces réservés « en ligne uniquement » sans contenu local.23
- La vraie identité d’un espace réservé est un point d’analyse géré par l’API Cloud Files (le minifiltre cldflt.sys). Il ressemble à un fichier ordinaire tant pour l’Explorateur que pour les API de fichiers, et l’ouvrir le télécharge (hydrate) automatiquement.4
- L’état se juge d’après les attributs de fichier. FILE_ATTRIBUTE_OFFLINE, RECALL_ON_DATA_ACCESS, PINNED, UNPINNED et analogues sont les marqueurs, et la commande attrib les montre comme les lettres O, P et U. Contrôler les attributs seuls ne provoque pas de téléchargement.567
- Les accidents typiques d’une application métier sont une combinaison de « ne s’ouvre pas », « lent », « attributs mal jugés », « tempête d’événements de surveillance » et « conflit avec la synchronisation ». Hors ligne ou avec OneDrive arrêté, l’hydratation échoue, et un traitement par lots induit le téléchargement de chaque fichier.48
- La réponse côté application est de « respecter les espaces réservés ». Les bases sont de juger d’après les attributs à l’énumération et de ne pas ouvrir à la légère, d’utiliser FILE_FLAG_OPEN_NO_RECALL si besoin, et de ne pas placer le dossier de données sous OneDrive.910
- La réponse côté informatique est « d’opérer avec des épingles » et « de contrôler par stratégie ». Garantissez le contenu réel des dossiers métier avec « Toujours conserver sur cet appareil », et configurez le KFM et les Fichiers à la demande exprès avec la stratégie de groupe / Intune. N’oubliez pas que le Contrôle d’espace de stockage peut aussi « renvoyer les fichiers inutilisés en ligne uniquement ».1112
En une phrase : « un fichier visible dans l’Explorateur » et « un fichier qui a un contenu réel sur le disque local » ne sont plus la même chose.
2. Ce qui se passe — le KFM et les Fichiers à la demande
2.1. Le Bureau n’est peut-être plus C:\Users\<nom>\Desktop
L’application de synchronisation OneDrive a une fonction appelée Known Folder Move (KFM). Sur l’écran des paramètres elle apparaît comme « Sauvegarde », « Sauvegarder des dossiers importants » et analogues ; lorsqu’elle est activée, le vrai Bureau, Documents et Images sont déplacés (redirigés) sous le dossier OneDrive.1
| Emplacement vu par l’utilisateur | Vrai chemin avant KFM | Vrai chemin après KFM |
|---|---|---|
| Bureau | C:\Users\taro\Desktop |
C:\Users\taro\OneDrive\Desktop |
| Documents | C:\Users\taro\Documents |
C:\Users\taro\OneDrive\Documents |
| Images | C:\Users\taro\Pictures |
C:\Users\taro\OneDrive\Pictures |
Lors de la configuration initiale (OOBE) d’un nouveau PC, se connecter avec un compte Microsoft ou un compte professionnel présente largement la sauvegarde de dossiers comme proposition par défaut, et poursuivre tel quel l’active. Une organisation peut aussi l’appliquer en masse sans rien demander à l’utilisateur, avec la stratégie « Déplacer silencieusement les dossiers connus Windows vers OneDrive » (KFMSilentOptIn).111
flowchart TB
accTitle: Deux chemins par lesquels le KFM s'active
accDescr: Se connecter avec un compte lors de la configuration initiale d'un nouveau PC présente la sauvegarde de dossiers comme proposition par défaut et poursuivre tel quel l'active ; dans une organisation la stratégie KFMSilentOptIn l'applique en masse sans demander à l'utilisateur
oobe["Configuration initiale d'un nouveau PC"] --> signin["Connexion avec un compte"]
signin --> prompt["La sauvegarde est proposée par défaut"]
prompt --> on1["Poursuivre tel quel l'active"]
org["Stratégie d'organisation"] --> silent["KFMSilentOptIn"]
silent --> on2["Appliqué en masse sans demander"]
on1 --> kfm["KFM activé"]
on2 --> kfm
Figure 2 : Le KFM s’active sans que personne ne le remarque, soit par la proposition par défaut à la configuration initiale, soit par la stratégie d’application silencieuse de l’organisation.
Le point gênant est que l’apparence dans l’Explorateur change à peine. Les API de dossiers connus du shell (SHGetKnownFolderPath et Environment.GetFolderPath de .NET) renvoient le chemin correct après déplacement, donc une application bien élevée continue de fonctionner. Ce qui casse, c’est une application qui incruste un chemin fixe tel que C:\Users\%USERNAME%\Desktop dans un fichier de paramètres ou dans le code. Le schéma typique d’un import qui échoue avec « fichier introuvable » après un remplacement de PC est celui-ci.
flowchart TB
accTitle: Comportement de la résolution de chemin après le KFM
accDescr: Après que le KFM a déplacé le vrai Bureau et des dossiers analogues sous OneDrive, une application qui utilise les API de dossiers connus continue de fonctionner avec le chemin correct après déplacement, mais une application qui incruste un chemin fixe échoue avec fichier introuvable
kfm["KFM activé"] --> move["Le vrai Bureau et analogues passent sous OneDrive"]
move --> how{"Comment l'application résout-elle le chemin ?"}
how -->|API de dossiers connus| ok["Obtient le chemin correct après déplacement et continue"]
how -->|Un chemin fixe codé en dur| ng["Fichier introuvable"]
Figure 3 : Après le KFM, une application qui utilise les API de dossiers connus continue de fonctionner, mais une application qui code en dur un chemin fixe casse ici.
2.2. Fichiers à la demande — visibles, mais sans contenu réel
L’autre piste est les Fichiers à la demande. Dans un environnement où ils sont activés, chaque fichier sur OneDrive est visible dans l’Explorateur, mais le contenu n’est pas téléchargé tant que le fichier n’est pas ouvert. Cette fonction est activée par défaut dans l’application de synchronisation actuelle, et Microsoft recommande aussi de la laisser activée.23
L’état se lit d’après les icônes d’état dans l’Explorateur.13
| Icône | État | Contenu local |
|---|---|---|
| Marque nuage | En ligne uniquement | Aucun (espace réservé seulement) |
| Coche sur fond blanc | Disponible localement | Présent (mais peut plus tard être libéré automatiquement) |
| Coche blanche sur fond vert | Toujours conserver sur cet appareil (épinglé) | Présent (hors libération automatique) |
L’important ici est l’état du milieu. Un fichier qui a été ouvert une fois et a maintenant un contenu local 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, discuté plus loin. C’est une cause d’échec difficile à reproduire du genre « ça marchait le mois dernier ».312
stateDiagram-v2
accTitle: Les trois états des Fichiers à la demande et les transitions
accDescr: Un fichier en ligne uniquement devient disponible localement une fois ouvert, mais une action Libérer de l'espace ou le Contrôle d'espace de stockage peut le renvoyer en ligne uniquement, et seul un fichier épinglé est hors de la libération automatique
s1: En ligne uniquement (marque 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: Désépingler
Figure 4 : Les trois états des Fichiers à la demande. « Disponible localement » peut revenir automatiquement en ligne uniquement ; une épingle est hors de cela.
3. La vraie identité d’un espace réservé — l’API Cloud Files et les points d’analyse
Les Fichiers à la demande sont implémentés au-dessus d’un mécanisme d’OS introduit dans Windows 10 version 1709, l’API Cloud Files. L’unité de travail côté système de fichiers est un minifiltre de système de fichiers nommé cldflt.sys (nom de service CldFlt, « Windows Cloud Files Filter Driver »), et OneDrive est un « fournisseur de synchronisation » qui utilise cette API.47
Un espace réservé est techniquement un point d’analyse (reparse point). Sur le système de fichiers n’existent que des métadonnées telles que le nom, la taille et les horodatages (environ 1 Ko) ; il n’y a pas de données de contenu. Quand une application ouvre le fichier et lit, le minifiltre détecte la requête, dit au fournisseur de synchronisation de transférer les données, attend la fin du téléchargement, puis la lecture se poursuit. Cette récupération s’appelle hydratation ; jeter le contenu local et revenir à un espace réservé s’appelle déshydratation.4
sequenceDiagram
accTitle: Hydratation à l'ouverture d'un espace réservé
accDescr: Quand une application ouvre un espace réservé et lit, le minifiltre cldflt.sys détecte la requête, dit au fournisseur de synchronisation de transférer les données, attend la fin du téléchargement, puis la lecture se poursuit
participant app as Application métier
participant flt as Minifiltre cldflt.sys
participant sync as Fournisseur de sync
app->>flt: Requête d'ouverture et de lecture
flt->>sync: Ordonner un transfert de données
sync-->>flt: Téléchargement terminé
flt-->>app: La lecture se poursuit
Figure 5 : Une lecture d’espace réservé se poursuit après que le minifiltre a fait récupérer les données par le fournisseur de synchronisation.
Entendre « point d’analyse » fait craindre la compatibilité avec du code existant qui « traite spécialement un point d’analyse s’il en détecte un », mais pour la compatibilité l’API Cloud Files cache le fait que c’est un point d’analyse à tous sauf le moteur de synchronisation et les processus sous %systemroot%. Depuis une application ordinaire, cela ressemble à « un fichier ordinaire juste un peu lent à ouvrir ». Cette transparence poussée est, en même temps qu’elle est commode, aussi la raison pour laquelle « l’application a ses hypothèses brisées sans s’en apercevoir ».4 Le mécanisme des points d’analyse eux-mêmes est expliqué dans « Les profondeurs de l’I/O Windows (partie 5) ».
flowchart TB
accTitle: Masquage du point d'analyse, et différence d'apparence
accDescr: La vraie identité d'un espace réservé est un point d'analyse, mais l'API Cloud Files le cache aux processus autres que le moteur de synchronisation, donc depuis une application ordinaire cela ressemble à un fichier ordinaire juste un peu lent à ouvrir
ph["Espace réservé (point d'analyse)"] --> who{"Quel processus l'a ouvert ?"}
who -->|Le moteur de sync et analogues| raw["Visible comme point d'analyse"]
who -->|Toute autre application| plain["Ressemble à un fichier ordinaire"]
plain -.-> note["Semble seulement un peu lent à ouvrir"]
Figure 6 : Le fait que c’est un point d’analyse est caché à tous sauf le moteur de synchronisation, et à une application ordinaire cela ressemble à un fichier ordinaire.
Dans les propriétés de l’Explorateur, un espace réservé a l’apparence caractéristique que « Taille » montre la taille d’origine, tandis que « Taille sur le disque » est presque 0. L’hypothèse que « il a une taille, donc il doit avoir un contenu réel » ne tient pas ici.
flowchart TB
accTitle: Apparence d'un espace réservé dans les propriétés
accDescr: Dans les propriétés de l'Explorateur un espace réservé montre la taille d'origine comme Taille tandis que Taille sur le disque est presque 0, donc l'hypothèse qu'il a une taille et doit donc avoir un contenu réel ne tient pas
prop["Propriétés de l'espace réservé"] --> size["Taille est la taille d'origine"]
prop --> disk["Taille sur le disque presque 0"]
size -.-> trap["L'hypothèse qu'il y a un contenu réel"]
disk -.-> truth["Il n'y a pas de contenu local"]
Figure 7 : Un espace réservé montre la taille d’origine comme « Taille » tandis que « Taille sur le disque » est presque 0.
4. Les attributs de fichier vous disent l’état
L’état d’espace réservé est publié comme attributs de fichier ordinaires. Les principaux sont les suivants.5
| Attribut | Valeur | Signification |
|---|---|---|
| FILE_ATTRIBUTE_OFFLINE | 0x00001000 | Les données ne sont pas immédiatement disponibles (l’attribut traditionnel de la gestion de stockage hiérarchique) |
| FILE_ATTRIBUTE_RECALL_ON_OPEN | 0x00040000 | Il n’y a pas de contenu local physique. N’apparaît que dans les résultats d’énumération de répertoire |
| FILE_ATTRIBUTE_PINNED | 0x00080000 | L’utilisateur entend « toujours le garder local » (épinglé) |
| FILE_ATTRIBUTE_UNPINNED | 0x00100000 | Le contenu local n’a pas besoin d’être conservé (l’intention de le rendre en ligne uniquement) |
| FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS | 0x00400000 | Une partie ou la totalité du contenu n’est pas locale. Lire provoque une récupération depuis le distant |
La commande attrib de l’invite de commandes peut afficher et définir ceux-ci comme une seule lettre. O est l’attribut hors ligne, P est épinglé, U est désépinglé.6 La correspondance avec l’état des Fichiers à la demande OneDrive est organisée dans la documentation Microsoft comme suit.7
| État Fichiers à la demande | Attributs | Commande pour définir |
|---|---|---|
| Toujours disponible (épinglé) | Pinned (P est affiché) | attrib +p <path> |
| Disponible localement | Ni P ni U | attrib -p <path> |
| En ligne uniquement | Unpinned (U est affiché) | attrib +u <path> |
Un avertissement. Changer d’état a un ordre. Quand vous voulez qu’un fichier en ligne uniquement (U) devienne « disponible localement », exécuter -p seul laisse U posé et le contenu réel n’est pas récupéré. La documentation Microsoft montre aussi la procédure de d’abord faire +p (toujours disponible) pour télécharger le contenu réel puis -p.7 Dans un script qui doit basculer un état existant de façon fiable, il est plus sûr de effacer l’attribut opposé en même temps, comme dans attrib +p -u.
flowchart TB
accTitle: L'ordre pour passer de en ligne uniquement à disponible localement
accDescr: Exécuter attrib -p seul sur un fichier en ligne uniquement laisse l'attribut U et le contenu réel n'est pas récupéré ; il faut d'abord télécharger le contenu réel avec attrib +p puis -p
u["En ligne uniquement (U)"] -->|attrib -p seulement| stay["Reste U ; le contenu réel n'est pas récupéré"]
u -->|attrib +p| pin["Épinglé (télécharger le contenu réel)"]
pin -->|attrib -p| local["Disponible localement"]
Figure 8 : Passer depuis en ligne uniquement exige l’ordre de d’abord récupérer le contenu réel avec +p puis -p.
Un exemple de jugement en PowerShell. Regarder les attributs seuls ne provoque pas d’hydratation, donc vous pouvez l’utiliser en confiance pour l’enquête et les contrôles en masse.
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
}
}
# Contrôle en masse des CSV sous le dossier Documents (le contenu n'est pas téléchargé).
# Résolvez le chemin avec l'API de dossiers connus. Codé en dur le nom d'affichage
# "Documents" peut devenir un chemin inexistant selon le vrai nom de dossier
# (Documents vs. un nom localisé) et 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] vient de ce que l’énumération FileAttributes de .NET ne définit pas de noms tels que RECALL_ON_DATA_ACCESS. Des opérations bit à bit sur la valeur numérique permettent de juger sans ennui.
5. Les pièges dans lesquels une application métier marche
C’est le sujet principal. La transparence des espaces réservés est commode la plupart du temps, mais combinée à un schéma de traitement typique d’application métier elle affleure sous les six formes suivantes.
5.1. Ouvrir démarre automatiquement un téléchargement — « ne s’ouvre pas » hors ligne
Ouvrir un fichier en ligne uniquement démarre l’hydratation sur place. En ligne, avec un petit fichier, c’est si rapide que l’on ne le remarque pas, mais lorsque OneDrive est arrêté, déconnecté ou en pause, lorsque le réseau est en mauvais état, ou lorsque le fichier est volumineux, cela devient « un fichier qui existe mais ne s’ouvre pas ». L’erreur peut revenir comme un code de la famille cloud-file tel que ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING (0x8007016A, “The cloud file provider is not running”), ou être observée comme un délai d’attente côté application.8
Un piège supplémentaire est qu’un contrôle d’existence équivalent à File.Exists(), et l’obtention des attributs ou de la taille, réussissent. Vous obtenez un schéma d’erreur que l’intuition du disque local ne peut pas expliquer : « le contrôle d’existence a réussi, mais la lecture a échoué ».
flowchart TB
accTitle: Branches à l'accès à un fichier en ligne uniquement
accDescr: Un contrôle d'existence et l'obtention des attributs et de la taille réussissent, mais lire le contenu démarre l'hydratation ; si OneDrive tourne et que le réseau est sain on peut lire après le téléchargement, sinon on échoue avec une erreur telle que 0x8007016A ou un délai d'attente
check["Contrôle d'existence, ou obtention des attributs ou de la taille"] --> ok1["Réussit"]
open["Lecture du contenu"] --> hyd["L'hydratation démarre"]
hyd --> cond{"OneDrive en cours et réseau sain ?"}
cond -->|Oui| read["Lisible après le téléchargement"]
cond -->|Non| err["Une erreur telle que 0x8007016A, ou un délai"]
Figure 9 : Un contrôle d’existence peut réussir tandis qu’une lecture échoue. Le succès ou l’échec dépend de si OneDrive tourne et du réseau.
5.2. Un traitement par lots induit le téléchargement de chaque fichier
Pointer un lot qui lit chaque fichier d’un dossier, un calcul de hachage, une recherche plein texte ou une sauvegarde maison vers un arbre sous OneDrive et l’hydratation de chaque fichier que vous touchez est induite. Pour un dossier de plusieurs Go, le traitement devient anormalement lent, le téléchargement remplit aussi le disque, et sur un PC à faible capacité le manque d’espace libre invite une autre panne. La capacité que les Fichiers à la demande étaient censés économiser disparaît en une seule analyse complète.
De plus, si une application provoque une hydratation sans action explicite de l’utilisateur, Windows peut afficher un toast et donner à l’utilisateur le choix de bloquer. Une fois bloquée, cette application continue d’échouer les téléchargements par la suite (on peut lever cela avec « Téléchargements automatiques de fichiers » dans Paramètres). C’est une cause de « l’import échoue seulement sur un PC particulier ».4
flowchart TB
accTitle: Comment un lot induit le téléchargement de chaque fichier
accDescr: Un lot sous OneDrive induit l'hydratation de chaque fichier qu'il touche, causant un retard de traitement et une pression disque, et si l'utilisateur bloque sur le toast, les téléchargements continuent d'échouer ensuite
scan["Un lot sous OneDrive"] --> touch["Hydrater chaque fichier touché"]
touch --> cost["Retard de traitement et pression disque"]
touch --> toast["Un toast peut apparaître"]
toast --> block{"L'utilisateur a-t-il bloqué ?"}
block -->|Oui| fail["Les téléchargements échouent ensuite"]
block -->|Non| cont["Le téléchargement continue"]
Figure 10 : Un lot induit l’hydratation de chaque fichier, et s’il est bloqué sur le toast, les échecs continuent ensuite.
5.3. Mauvais comportement du code qui n’attend pas les attributs
Le code qui ne connaît pas FILE_ATTRIBUTE_OFFLINE ou RECALL_ON_DATA_ACCESS se comporte mal à des endroits inattendus.
- Les attributs sont testés en égalité exacte (
attributes == FileAttributes.Archiveet analogues), donc un espace réservé est exclu ou traité comme une erreur en tant que « fichier inattendu » - Une décision d’exclusion dans un outil de sauvegarde ou de synchronisation interprète l’attribut OFFLINE comme « déjà envoyé sur bande » et saute (ou, à l’inverse, récupère chaque fichier qu’il aurait dû exclure)
- Un contrôle en lecture seule ou une opération de bit d’archive casse la combinaison d’attributs
flowchart TB
accTitle: Schémas de mauvais comportement du code qui n'attend pas les attributs
accDescr: Le code qui ne connaît pas les attributs d'espace réservé se comporte mal comme exclusion ou gestion d'erreur par un test d'égalité exacte, saut ou récupération complète par une mauvaise interprétation de OFFLINE, ou casse de la combinaison d'attributs
code["Code qui n'attend pas les attributs"] --> m1["Test d'égalité exacte"]
code --> m2["Mal interprète OFFLINE"]
code --> m3["Une opération d'attribut casse la combinaison"]
m1 --> r1["Exclu ou en erreur comme inattendu"]
m2 --> r2["Saut, ou une récupération complète"]
Figure 11 : Le code qui ne connaît pas OFFLINE ou les attributs de la famille RECALL se comporte mal comme exclusion, mauvais saut ou destruction d’attributs.
Les conseils de Microsoft pour les développeurs de minifiltres affirment clairement que l’on ne doit pas émettre une lecture ou une écriture négligente vers un fichier qui a RECALL_ON_DATA_ACCESS. Le document vise les pilotes noyau, mais le principe « toucher le contenu d’un fichier avec cet attribut = un coût de récupération se produit » s’applique tel quel à une application en mode utilisateur.10
5.4. Interaction entre FileSystemWatcher et la synchronisation
Surveiller un dossier sous OneDrive avec FileSystemWatcher et vous obtenez non seulement les actions de l’utilisateur mais aussi un grand nombre d’événements issus de l’activité de l’application de synchronisation. Chaque fois qu’une modification sur un autre appareil est synchronisée, et chaque fois que l’hydratation ou la déshydratation change les attributs ou la taille, un événement Changed peut se déclencher. De plus, une conception qui écrit le résultat d’une surveillance-et-import dans le même dossier devient une « tempête de notifications de changement » dans une boucle écriture → téléversement → mise à jour d’attributs → un autre événement. L’élagage des événements et la conception d’un contrôle de contenu réel sont traités dans « Guide pratique de FileSystemWatcher », mais sous OneDrive le besoin en est encore un cran plus haut.
flowchart TB
accTitle: Une boucle de notifications de changement par surveillance et réécriture
accDescr: Si 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 téléversement et la mise à jour d'attributs de l'application de sync déclenchent un autre événement, et cela devient une boucle — une tempête de notifications
ev["Événement de changement"] --> proc["L'application de surveillance importe"]
proc --> write["Réécrire dans le même dossier"]
write --> up["L'application de sync téléverse"]
up --> attr["Les attributs ou la taille sont mis à jour"]
attr --> ev
sync["Sync d'un changement depuis un autre appareil"] -.-> ev
Figure 12 : Réécrire le résultat d’import dans le même dossier devient une boucle dans laquelle l’activité de l’application de synchronisation produit un autre événement.
5.5. Conflits de synchronisation pendant un verrou exclusif, et fichiers « Copie »
Pendant qu’une application métier a un fichier ouvert avec un verrou exclusif, l’application de synchronisation ne peut ni téléverser ni mettre à jour ce fichier. Placer une application à verrou longuement tenu (un Access .accdb, un fichier de données dans un format maison, un fichier journal, et analogues) sous OneDrive rend les erreurs de synchronisation l’état normal. À l’inverse, lorsque le même fichier est édité sur plusieurs PC, l’application de synchronisation essaie de garder les deux éditions et produit un fichier en double avec un nom de PC ou une copie de conflit telle que « — copie ». Un import qui suppose « un dossier, un fichier » se comporte mal sur ce double. Pour les bases de la conception de verrou, voir « Les bases du contrôle d’exclusion pour l’intégration par fichiers ».
flowchart TB
accTitle: Problèmes de sync causés par un verrou exclusif et une édition multi-PC
accDescr: Pendant qu'une application a un fichier ouvert avec un verrou exclusif l'application de sync ne peut pas mettre à jour et les erreurs de sync deviennent l'état normal ; éditer le même fichier sur plusieurs PC produit une copie de conflit et l'hypothèse un-dossier-un-fichier s'effondre
lock["L'application ouvre avec un verrou exclusif"] --> nosync["Impossible de sync ; les erreurs deviennent normales"]
multi["Le même fichier est édité sur plusieurs PC"] --> conflict["Une copie de conflit est produite"]
conflict --> dup["Un double avec un nom de PC ou copie"]
dup --> bad["L'hypothèse un-dossier-un-fichier s'effondre"]
Figure 13 : Un verrou exclusif rend les erreurs de synchronisation l’état normal, et l’édition sur plusieurs PC invite un mauvais comportement dû à une copie de conflit.
5.6. L’antivirus et l’indexeur de recherche induisent l’hydratation
Ce n’est pas seulement l’application métier qui lit le contenu des fichiers. Une analyse complète par un logiciel antivirus, et l’indexeur de recherche, induisent aussi l’hydratation s’ils touchent le contenu d’un espace réservé. Microsoft Defender et des produits analogues sautent les fichiers qui ont l’attribut RECALL_ON_DATA_ACCESS au moment de l’analyse à la demande, mais c’est une réponse côté produit, et vous ne pouvez pas supposer que chaque produit de sécurité montrera le même soin. Si vous voyez des symptômes tels que « le réseau et le disque saturent chaque nuit à l’heure d’analyse » ou « des fichiers censés être en ligne uniquement se sont tous matérialisés d’ici le matin », suspectez cette piste.14
flowchart TB
accTitle: Hydratation induite par un produit de sécurité ou l'indexeur de recherche
accDescr: Quand une analyse complète ou l'indexeur de recherche touche le contenu d'un espace réservé, un produit qui respecte l'attribut RECALL saute, mais un produit qui ne le fait pas hydrate chaque fichier et cause une pression de bande passante nocturne ou une matérialisation matinale
av["Une analyse complète ou l'indexeur de recherche"] --> care{"Respecte l'attribut RECALL ?"}
care -->|Un produit qui le respecte| skip["Saute l'espace réservé"]
care -->|Un produit qui ne le fait pas| hyd["Touche le contenu et hydrate"]
hyd --> sym1["Bande passante et disque saturent la nuit"]
hyd --> sym2["D'ici le matin les fichiers se sont tous matérialisés"]
Figure 14 : Une analyse qui ne respecte pas l’attribut induit l’hydratation de chaque fichier, et cela apparaît comme charge nocturne ou matérialisation matinale.
6. Réponse côté développement d’application — respecter les espaces réservés
La politique de base en tant que développeur est de traiter un espace réservé non comme « un fichier cassé » mais comme « un fichier qui a un coût de récupération ».
- Jugez d’après les attributs à l’énumération, et n’ouvrez pas à la légère. Dans une analyse de dossier, confirmez d’abord d’après les attributs (le jugement du chapitre 4) s’il est en ligne uniquement, et n’ouvrez que les fichiers dont vous avez besoin du contenu. Donnez au traitement qui « n’est pas fatal s’il manque » — collecte de journaux, calcul de hachage, génération d’aperçu — l’option de sauter les espaces réservés.
// Définir comme nombres les valeurs que FileAttributes en .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 ; on saute cette fois");
continue;
}
Import(file.FullName);
}
flowchart TB
accTitle: Le chemin de juger d'après les attributs à l'énumération puis d'ouvrir
accDescr: Dans une analyse de dossier, confirmez d'abord les attributs à l'énumération ; s'il s'agit d'un espace réservé, sautez et laissez un journal d'avertissement, et n'exécutez l'import que sur les autres fichiers, afin d'éviter une hydratation négligente
enum["Confirmer les attributs à l'énumération"] --> ph{"Espace réservé ?"}
ph -->|Oui| skip["Sauter et laisser un journal d'avertissement"]
ph -->|Non| imp["Exécuter l'import"]
skip -.-> note["La politique d'ouvrir seulement les fichiers dont on a besoin du contenu"]
Figure 15 : Jugez d’après les attributs à l’énumération et sautez un espace réservé sans l’ouvrir, afin d’éviter une hydratation négligente.
- Notez que FILE_FLAG_OPEN_NO_RECALL n’est pas une garantie de « ne pas télécharger ». Spécifier cet indicateur sur CreateFile peut indiquer l’intention que « les données obtenues doivent être laissées côté distant et non réécrites vers le stockage local ». C’est toutefois un indicateur seulement pour ne pas rendre résidentes localement les données obtenues ; si vous lisez le contenu, le transfert de données lui-même se produit encore. Si vous voulez éviter la bande passante et la latence elles-mêmes, terminez avec les attributs, la taille et les horodatages seuls — ne demandez pas d’accès en lecture (ouvrez avec des droits d’accès 0, utilisez les métadonnées du résultat d’énumération). C’est le plus sûr.9
flowchart TB
accTitle: L'effet et les limites de FILE_FLAG_OPEN_NO_RECALL
accDescr: FILE_FLAG_OPEN_NO_RECALL est un indicateur pour ne pas rendre résidentes localement les données obtenues ; si vous lisez le contenu le transfert de données lui-même se produit encore, donc si vous voulez éviter le transfert le plus sûr est de terminer avec des métadonnées telles que les attributs
flag["Ouvrir avec l'indicateur NO_RECALL"] --> read["Lire le contenu"]
read --> transfer["Un transfert de données se produit"]
transfer --> nolocal["Cela ne devient pas résident localement"]
meta["Terminer avec les métadonnées seules"] --> safe["Aucun transfert ; le plus sûr"]
Figure 16 : FILE_FLAG_OPEN_NO_RECALL empêche seulement de devenir résident localement ; si vous voulez éviter le transfert lui-même, terminez avec les métadonnées seules.
- Mettez « ceci est sous OneDrive » dans le message d’erreur. Lors d’un échec de lecture, rien que confirmer si le chemin cible est sous
%OneDrive%et l’inclure dans le message réduit fortement le temps de triage pour le terrain et le service d’assistance. Si vous détectez une erreur de la famille cloud-file telle que 0x8007016A, l’idéal est de dire à l’utilisateur « veuillez vérifier l’état de OneDrive ». - Ne placez pas le dossier de données de l’application sous OneDrive. Dans un environnement KFM, « Documents » est aussi sous OneDrive. Placez les paramètres, la base de données et les fichiers de travail de l’application dans
%ProgramData%ou%LocalAppData%, et ne choisissez pas Bureau ou Documents comme emplacement d’enregistrement par défaut ou dossier d’import par défaut. Comment décider quoi mettre où est résumé dans « Comment choisir où une application Windows stocke ses données locales ». - Décidez le comportement lorsque l’utilisateur choisit un emplacement sous OneDrive. Pour une application qui laisse l’utilisateur choisir un emplacement d’enregistrement, incluez à l’avance dans la spécification une décision de conception telle qu’avertir lorsque le chemin choisi est sous OneDrive (sous le chemin des variables d’environnement
OneDrive/OneDriveCommercial), ou refuser seulement le placement d’un fichier de verrou ou d’une base de données.
7. Réponse côté informatique — contrôler avec des épingles et une stratégie
Depuis la position informatique, l’exploitation réaliste n’est pas « désactiver entièrement les Fichiers à la demande » mais garantir le contenu réel seulement là où le métier en a besoin.
- Épinglez les dossiers qu’une application métier lit. Choisissez « Toujours conserver sur cet appareil » dans le menu contextuel de l’Explorateur, ou exécutez
attrib +p -u <folder> /s /ddepuis un script d’image (vous spécifiez-uen même temps afin qu’un mélange de fichiers déjà en ligne uniquement soit basculé de façon fiable vers épinglé). Un fichier épinglé a son contenu réel garanti localement et est aussi hors de la conversion automatique en ligne uniquement discutée plus loin.72 - Configurez le KFM et les Fichiers à la demande « exprès », pas « c’était activé quand on l’a remarqué ». Les principales stratégies (stratégie de groupe / Intune) sont les suivantes.111
| Objectif | Stratégie (valeur de registre) | Effet |
|---|---|---|
| Contrôle des Fichiers à la demande | Use OneDrive Files On-Demand (FilesOnDemandEnabled) | Activé : les nouveaux utilisateurs sont par défaut en ligne uniquement. Désactivé : synchronisation complète classique |
| Application en masse du KFM | Silently move Windows known folders to OneDrive (KFMSilentOptIn) | Déplacer Bureau et analogues sans action de l’utilisateur |
| Interdire le KFM | Prevent users from moving their Windows known folders to OneDrive (KFMBlockOptIn) | Interdire le déplacement des dossiers connus |
| Interdire de désactiver le KFM | Prevent users from redirecting their Windows known folders to their PC (KFMBlockOptOut) | Interdire à l’utilisateur de le désactiver |
| Réduire la capacité des sites d’équipe | Convert synced team site files to online-only (DehydrateSyncedTeamSites) | Rendre les sites d’équipe synchronisés en ligne uniquement (noter que cela agit dans le sens de la disparition du contenu réel) |
- Sachez comment le Contrôle d’espace de stockage se déplace. Le Contrôle d’espace de stockage a une fonction qui renvoie automatiquement en ligne uniquement les fichiers cloud qui n’ont pas été ouverts depuis un certain nombre de jours, et vous pouvez configurer le nombre de jours avec la stratégie (ConfigStorageSenseCloudContentDehydrationThreshold). La valeur par défaut est 0 (ne pas renvoyer automatiquement), mais si un utilisateur l’a activé depuis l’écran des paramètres, ou si l’organisation l’a configuré pour des appareils à faible capacité, « un fichier ouvert la semaine dernière est revenu à une icône nuage » se produit comme comportement normal. Un fichier épinglé est hors périmètre, donc « épingler les dossiers métier » fonctionne ici aussi.122
flowchart TB
accTitle: Branches de la conversion automatique en ligne uniquement du Contrôle d'espace de stockage
accDescr: Dans la libération automatique du Contrôle d'espace de stockage, un fichier épinglé est hors périmètre et le contenu réel est conservé ; un fichier non épinglé qui n'a pas été ouvert depuis un certain nombre de jours est renvoyé en ligne uniquement
ss["Libération automatique du Contrôle d'espace de stockage"] --> pin{"Épinglé ?"}
pin -->|Oui| stay["Hors périmètre ; le contenu réel est conservé"]
pin -->|Non| old{"Pas ouvert depuis un certain nombre de jours ?"}
old -->|Oui| dehyd["Renvoyé en ligne uniquement"]
old -->|Non| keep["Le contenu réel est conservé"]
ss -.-> def["La valeur par défaut 0 ne renvoie pas automatiquement"]
Figure 17 : Le Contrôle d’espace de stockage renvoie en ligne uniquement un fichier qui n’a pas été ouvert depuis un certain nombre de jours, mais une épingle est hors périmètre.
- Estimez l’impact avant de désactiver les Fichiers à la demande. Désactiver FilesOnDemandEnabled devient une synchronisation classique en téléchargement complet, mais la consommation disque et la charge de bande passante de la première synchronisation bondissent. Microsoft recommande de le laisser activé, et vous devriez traiter la désactivation comme une mesure limitée après avoir confirmé que « le volume de données des utilisateurs cibles est petit » et « il y a de la marge disque ».112
- Intégrez-le dans la procédure de support. Mettre la procédure de triage du chapitre suivant dans le modèle de demande « un fichier sur le Bureau ne s’ouvre pas » maintient la qualité de la réponse même lorsque la personne qui s’en occupe change.
8. Procédure de triage — lorsque l’on vous dit « le fichier ne s’ouvre pas »
Lorsque vous prenez la consultation, confirmez de haut en bas.
| # | Quoi confirmer | Comment | Ce que vous apprenez |
|---|---|---|---|
| 1 | Le chemin est-il sous OneDrive ? | Confirmez la racine de sync avec echo %OneDrive% et faites-la correspondre au chemin cible. Confirmez aussi le vrai chemin de « Bureau » dans la barre d’adresse de l’Explorateur |
Si le KFM / OneDrive est impliqué |
| 2 | L’état du fichier | Confirmez U (en ligne uniquement), P (épinglé) et O avec attrib <path>. Regardez aussi « Taille sur le disque » dans les propriétés |
Si le contenu réel est local, ou si c’est un espace réservé |
| 3 | Si OneDrive tourne | L’icône de la barre des tâches (connecté, en pause, erreur), Get-Process OneDrive |
Si l’hydratation est possible. 0x8007016A est typiquement arrêté ou mal configuré8 |
| 4 | Le réseau | Proxy d’entreprise, bande passante, accessibilité au service OneDrive | Si le téléchargement lui-même est possible |
| 5 | L’espace disque libre | Espace libre sur le volume cible. À faible capacité il y a aussi une stratégie par laquelle OneDrive bloque les téléchargements | Un autre facteur d’échec d’hydratation |
| 6 | Un enregistrement de l’échec | Notez le code d’erreur de l’application et l’heure d’occurrence, et faites-les correspondre à l’affichage d’erreur de l’application de sync | Si c’est un problème côté application ou côté OneDrive |
Le palliatif est de faire un clic droit sur le dossier cible et de choisir « Toujours conserver sur cet appareil » (ou attrib +p /s /d). Cela aligne le contenu réel en local et le métier peut reprendre. Par-dessus, décidez si la cause essentielle est côté application (chapitre 6) ou côté informatique (chapitre 7) comme réponse permanente.
flowchart TB
accTitle: Le chemin d'un palliatif à une réponse permanente
accDescr: En palliatif, définir le dossier cible sur Toujours conserver sur cet appareil aligne le contenu réel en local pour que le métier puisse reprendre ; par-dessus vous décidez si la cause essentielle est côté application ou côté informatique et passez à une réponse permanente
aid["Épingler en palliatif"] --> restore["Le contenu réel est aligné en local"]
restore --> resume["Le métier reprend"]
resume --> judge{"Où est la cause essentielle ?"}
judge -->|Côté application| dev["Vers la réponse du chapitre 6"]
judge -->|Côté informatique| ops["Vers la réponse du chapitre 7"]
Figure 18 : Le palliatif est d’épingler, d’aligner le contenu réel et de reprendre le métier ; la réponse permanente se poursuit après avoir décidé s’il s’agit du côté application ou du côté informatique.
Si vous avez confirmé jusqu’ici et que « le chemin n’est pas sous OneDrive » et « ce n’est pas un espace réservé non plus », vous passez à d’autres causes classiques telles qu’un dossier partagé ou la 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 » sont la carte pour la suite.
9. Résumé
- Le KFM peut avoir déplacé le vrai Bureau, Documents et Images sous
C:\Users\<nom>\OneDrive\. Une application qui suppose un chemin fixe casse ici. Résoudre avec les API de dossiers connus est le premier pas. - Les Fichiers à la demande sont activés par défaut, et des espaces réservés sans contenu local existent comme une évidence. Un espace réservé est un point d’analyse de l’API Cloud Files (cldflt.sys), et l’ouvrir l’hydrate automatiquement.
- L’état se juge d’après les attributs de fichier (OFFLINE / RECALL_ON_DATA_ACCESS / PINNED / UNPINNED) et apparaît comme O, P et U dans attrib. Contrôler les attributs seuls ne provoque pas de téléchargement.
- Les accidents d’application métier apparaissent comme échec d’hydratation hors ligne, téléchargement complet depuis un lot, code qui n’attend pas les attributs, interaction entre FileSystemWatcher et la synchronisation, conflit entre un verrou exclusif et la synchronisation, et hydratation induite par un produit de sécurité.
- Côté application, les bases sont « juger d’après les attributs et ne pas ouvrir à la légère », « ne pas placer le dossier de données sous OneDrive », et « dire que c’est sous OneDrive lorsque vous signalez une erreur ».
- Côté informatique, vous créez l’état voulu avec « l’épinglage des dossiers métier » et « le contrôle par stratégie du KFM, des Fichiers à la demande et du Contrôle d’espace de stockage ».
- Le triage peut se parcourir mécaniquement dans l’ordre chemin → attrib → OneDrive en cours → réseau → espace libre → enregistrement.
La prochaine fois que l’on vous dit « le fichier est là mais il ne s’ouvre pas », posez d’abord ceci.
Ce fichier est-il vraiment sur le disque local ? Ou n’est-ce que l’apparence du cloud qui est assise là ?
Articles connexes
- Les profondeurs de l’I/O 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 impliquant OneDrive et le stockage cloud — « un import qui fonctionnait ne fonctionne plus après un remplacement de PC », « un fichier ne s’ouvre que sur un PC particulier » —, la conception et la remédiation du traitement de fichiers et de la surveillance qui supposent des espaces réservés, et les revues de conception d’emplacement d’enregistrement dans un environnement KFM / Fichiers à la demande. Commencer par isoler le symptôme convient — n’hésitez pas à nous contacter.
- 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 le KFM déplace Bureau, Documents et Images sous OneDrive, et les stratégies d’invite, d’application silencieuse, d’interdiction de désactivation et d’interdiction de déplacement. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Recommended sync app configuration. Que les Fichiers à la demande sont activés par défaut et que les laisser activés est recommandé, 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 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, Build a Cloud Sync Engine that Supports Placeholder Files. Un aperçu de l’API Cloud Files, qu’un espace réservé ne tient qu’environ 1 Ko de métadonnées et que l’ouvrir l’hydrate automatiquement, que le point d’analyse est caché aux processus autres que le moteur de synchronisation et ceux sous %systemroot%, et le toast et le blocage pour l’hydratation en arrière-plan. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
Microsoft Learn, File Attribute Constants. Les définitions et valeurs de FILE_ATTRIBUTE_OFFLINE, RECALL_ON_OPEN, RECALL_ON_DATA_ACCESS, PINNED et UNPINNED. ↩ ↩2
-
Microsoft Learn, attrib. La syntaxe de la commande attrib et les indicateurs d’attribut y compris O (hors ligne), P (épinglé) et U (désépinglé). ↩ ↩2
-
Microsoft Learn, Query and set Files On-Demand states in Windows. Confirmer l’état des Fichiers à la demande avec attrib et le définir avec +p, -p et +u, et le service CldFlt. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Error 0x8007016a when copying files in OneDrive. Que l’erreur 0x8007016A “The cloud file provider is not running” se produit lorsque OneDrive est mal configuré ou arrêté, et les étapes de résolution. ↩ ↩2 ↩3
-
Microsoft Learn, CreateFileW function (fileapi.h). Que FILE_FLAG_OPEN_NO_RECALL est un indicateur indiquant que « les données demandées doivent être laissées côté distant et non transférées vers le stockage local » (il n’empêche pas d’obtenir les données elles-mêmes), et l’obtention d’attributs en ouvrant avec des droits d’accès 0. ↩ ↩2
-
Microsoft Learn, Handling placeholders. Qu’un espace réservé doit avoir FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS, et qu’une lecture ou une écriture négligente vers un fichier avec cet attribut invite une hydratation inutile ou une corruption de données. ↩ ↩2
-
Microsoft Learn, IT Admins - Use OneDrive policies to control sync settings. Les stratégies pour configurer l’application de synchronisation OneDrive avec GPO/Intune, y compris FilesOnDemandEnabled, KFMSilentOptIn, KFMBlockOptIn, KFMBlockOptOut et DehydrateSyncedTeamSites. ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Policy CSP - Storage. Que le Contrôle d’espace de stockage peut rendre en ligne uniquement les fichiers cloud qui n’ont pas été ouverts depuis un certain nombre de jours, la valeur par défaut 0 (ne pas renvoyer automatiquement), et la configuration de 0–365 jours. ↩ ↩2 ↩3
-
Microsoft Support, What do the OneDrive icons mean?. La signification des icônes d’état affichées dans l’Explorateur, telles que le nuage et les coches. ↩
-
Microsoft Learn, Plan for an Azure File Sync deployment. Qu’une analyse antivirus peut provoquer le rappel d’un fichier avec l’attribut RECALL_ON_DATA_ACCESS, et que Microsoft Defender et des produits analogues sautent les fichiers avec cet attribut au moment de l’analyse à la demande. ↩
Articles associés
Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.
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...
Les applications qui cassent à la reprise de veille — comment fonctionnent les événements d'alimentation Windows et comment construire des applications métier qui y survivent
Vous avez ouvert le portable et les connexions de l'application métier étaient mortes — la cause est une conception qui n'a jamais tenu c...
WPR/WPA en pratique — Introduction à l'investigation des performances à l'échelle du système pour « tout le PC est lent »
Les problèmes de performance tels que « tout le PC est lent » ou « le démarrage est lent », que le Gestionnaire des tâches ne permet pas ...
Introduction à l'accessibilité des applications Windows — se préparer à UI Automation et aux exigences d'aménagement raisonnable
Dans le contexte de la loi amendée sur l'élimination des discriminations à l'égard des personnes handicapées, entrée en vigueur en avril ...
Pièges des polices et des caractères japonais — Traiter JIS2004, IVS et les gaiji dans les applications métier
« Le caractère 葛 n'a pas le même aspect à l'écran et sur le formulaire imprimé. » « Un caractère d'un nom de personne ne s'affiche pas. »...
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\Desktop 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.