A propos des fichiers “bloqués”
Vous avez tous déjà vu ce type de dialogue au lancement d’un fichier exécutable transféré depuis un média distant (vers un média NTFS), notamment lors d’un téléchargement avec Internet Explorer ou tout autre logiciel utilisant l’Attachment Manager disponible sous Windows XP SP2 et supérieurs (Firefox sous Windows semble en faire usage, du moins depuis sa version 3) :
Vous pouvez aussi voir un fichier (CHM par exemple) produisant un résultat assez anormal.
Vous savez sans doute que dans ce cas là vous devez débloquer explicitement l’accès à ce fichier via le bouton prévu à cet effet dans le dialogue de propriété du fichier :
A ma connaissance, la seule action effectuée consiste à supprimer l’ADS (Alternate Data Stream) “Zone.Identifier” positionnée sur le fichier. Cet ADS sert à persister la zone de provenance du fichier afin de permettre au système de déterminer le comportement requis au moment de l’accès au fichier.
Si vous utilisez Windows Vista et supérieurs vous pouvez voir ces ADS sans outils tiers, la commande dir supporte ceci via le switch /R :
C:\temp>dir *.* /R
Volume in drive C has no label.
Volume Serial Number is A835-8A58
Directory of C:\temp
05/10/2008 13:35 <DIR> .
05/10/2008 13:35 <DIR> ..
05/10/2008 12:59 330 969 File.pdf
26 File.pdf:Zone.Identifier:$DATA
05/10/2008 12:59 330 969 File_unblocked.pdf
2 File(s) 661 938 bytes
2 Dir(s) 3 215 982 592 bytes free
Sur les versions précédentes de Windows, vous pouvez utiliser l’outil Streams de Mark Russinovich :
C:\temp>streams -s *.*
Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com
C:\temp\File.pdf:
:Zone.Identifier:$DATA 26
Si vous désirez jeter un oeil au contenu de ce flux, vous pouvez utiliser tout simplement Notepad (ou tout autre éditeur supportant l’ouverture d’ADS) :
C:\temp>notepad File.pdf:Zone.Identifier
Ou “more” si vous préférez rester en ligne de commande (“type” ne supporte pas les ADS) :
C:\temp>more < File.pdf:Zone.Identifier
[ZoneTransfer]
ZoneId=3
La valeur 3 correspond à la zone “Internet”.
La présence de ce flux de données alternatif Zone.Identifier indique donc le blocage potentiel (suivant la valeur de ZoneId) au niveau de l’exécution ou de l’accès.
Pour approfondir :
Marc van Orsouw avait abordé le sujet et fourni une solution pour l’utilisation via PowerShell reposant sur la bibliothèque de classes de Richard Deeming, mais avec sa mise à jour vers .NET 3.5 elle nécessitera probablement quelques retouches : PowerShell : Accessing alternative data-streams of files on an NTFS volume ...
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :