Le répertoire non masqué ne s'affiche pas dans l'Explorateur, mais le programme qui l'a créé peut y accéder


26

J'utilise IMAPSize pour sauvegarder mes boîtes aux lettres. Le processus vide simplement le contenu de votre boîte aux lettres dans des .emlfichiers sur votre disque. Quoi qu'il en soit, la première boîte aux lettres que j'ai sauvegardée s'affiche comme prévu. Cependant, le suivant ne s'affiche pas dans l'Explorateur et, si je le saisis dans la barre d'adresse, il me dit qu'il n'existe pas.

Cependant, IMAPSize insiste pour que les fichiers soient là. (Beaucoup d'écriture sur disque a été en cours d' exécution au cours de l'opération.) De plus, le répertoire n'apparaît dans la boîte de dialogue de répertoire Windows et - comme je l' ai installé les outils GNU - il montre en (mais pas dans le natif ). Je ne peux pas entrer dans le répertoire, mais il semble pouvoir y accéder (et, en effet, les répertoires et les fichiers que j'attends semblent être là).lsdircdls

fenêtre d'invite de commande affichant les listes

Notez également que l'horodatage et la taille du fichier backup.dbsont différents dans la sortie diret ls -l.

En bref: que se passe-t-il ici et comment y remédier!?


1
La seule différence notable que je vois est que cela ls -lmontre un nombre particulier de liens durs vers les répertoires et fichiers "cachés" ... Je ne sais pas pourquoi, ni comment un lien dur est même interprété dans NTFS-land.
Xophmeister

... Juste pour confirmer: je peux accéder aux données des fichiers "cachés", depuis la ligne de commande, en utilisant cat(un autre coreutil GNU). Encore une fois, cependant, les outils Windows natifs (par exemple type) ne peuvent même pas trouver le fichier.
Xophmeister

Réponses:


63

Laissez-moi deviner: le programme qui a créé le fichier, ainsi que les utilitaires GNU, ne fonctionnent pas en tant qu'administrateur.

Tout d'abord, un peu d'histoire. À l'époque de Windows XP, de nombreux programmes supposaient qu'ils seraient toujours exécutés en tant qu'administrateur et qu'ils écriraient dans des endroits comme C:\Windowset C:\Program Files (x86)avec un abandon sauvage. Avec Vista, Microsoft a essayé de réduire le nombre d'administrateurs, mais les utilisateurs standard ne peuvent pas écrire à ces endroits. Ils avaient besoin de ces programmes douteux pour continuer à fonctionner (sinon les gens ne mettraient pas à niveau). Ils ont donc introduit une fonctionnalité magique appelée virtualisation UAC .

Les programmes exécutés en tant qu'utilisateurs standard peuvent penser que leurs écritures vers des emplacements importants ont réussi, mais en réalité, Windows a écurvé les données dans un emplacement par utilisateur. Lorsque ces programmes recherchent des fichiers dans un répertoire, Windows vérifie s'il existe des fichiers dans le magasin virtuel de cet emplacement et, dans l'affirmative, il les ajoute à la liste des répertoires. (Il existe des fonctionnalités équivalentes pour le Registre.)

Il semble que votre programme de messagerie ait tenté d'écrire dans un emplacement sous Program Files (x86)en cours d'exécution en tant qu'utilisateur normal. L'écriture a été redirigée, donc elle n'a pas été envoyée à cet endroit. Le programme peut toujours le voir, car Windows maintient l'illusion pour cela. Explorer ne le voit pas car il annonce au système d'exploitation qu'il se comporte bien et n'a donc pas besoin de redirection. La commande de l'invite de dircommande n'est pas un programme (c'est juste une fonctionnalité de cmd.exe), elle est donc également considérée "dans le courant" et les fichiers de compatibilité ne sont donc pas affichés. lsest un programme qui n'est évidemment pas au courant, donc il peut voir les fichiers de compatibilité.

Vous trouverez votre dossier ici:

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup

En fouillant VirtualStore, vous pourriez être surpris de voir quels programmes ne se comportent pas bien et ont besoin du filet de sécurité de la virtualisation.

Si vous souhaitez arrêter la redirection, exécutez le programme en tant qu'administrateur ou enregistrez vos sauvegardes dans un emplacement dans lequel vous pouvez réellement écrire sans privilèges d'administrateur.


16
Et ici, je pensais que je connaissais Windows. Soit c'est une plaisanterie d'avril bien faite, soit j'ai appris quelque chose d'important aujourd'hui. merci @Ben N!
Aganju

3
@Aganju Il y a quelques mois, j'ai dû aider un utilisateur Windows à créer une paire de clés pour WinSCP. Et ceux-ci sont devenus invisibles à peu près de la même manière que celle décrite dans la question. À l'époque, j'ai émis l'hypothèse d'une explication à peu près la même que celle donnée dans cette réponse. Je n'ai pas pris la peine de vérifier mon hypothèse, car le problème a été résolu en plaçant le fichier dans le répertoire personnel des utilisateurs à la place. Mais au moins je peux confirmer que cette réponse ne me ressemble pas du tout à une blague.
kasperd

3
Et bien je serai damné! Ils sont tous là. C'est un comportement étrange , même s'il est prévu. Je pensais que j'avais une erreur de système de fichiers! ... Cela expliquerait également pourquoi ma première sauvegarde de boîte aux lettres apparaît: le programme a d'abord été exécuté à partir du programme d'installation ("Voulez-vous exécuter telle ou telle chose maintenant?"), Qui l'aurait élevé à avoir des privilèges d'administrateur; tandis que l'exécution "cachée" était en tant qu'utilisateur local.
Xophmeister

1
@Aganju Je suppose que vous n'avez jamais beaucoup utilisé Vista. Il avait une fonctionnalité pour vous montrer les fichiers virtualisés dans l'Explorateur; parce que le problème était suffisamment courant pendant quelques années. Au moment où Win7 est apparu, le logiciel le plus utilisé a cessé de supposer qu'il pouvait écrire dans les sous-dossiers de son répertoire d'installation; et la fonctionnalité a été rendue nettement moins visible ou peut-être carrément supprimée dans les versions les plus récentes de Windows.
Dan Neely

4
@Xophmeister C'est un compromis. Comme indiqué dans la réponse, l'écriture de logiciels dans son propre répertoire d'applications était assez courante avant Vista. Il s'agit d'un énorme trou de sécurité, il a donc dû être résolu. Les alternatives étaient 1) empêcher l'écriture et casser toutes les applications, 2) utiliser la virtualisation pour enregistrer les fichiers dans un endroit sûr. 1) est évidemment intenable et très contraire au SOP de Microsoft, et au final, cela ne ferait que conduire tout le monde sous administrateur comme auparavant. Cela peut être déroutant, mais c'est probablement la meilleure option. N'écrivez pas dans des répertoires dangereux.
Luaan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.