Précédent   Forum des professionnels en informatique > Systèmes > Windows > Windows Vista
Windows Vista Forum d'entraide Windows Vista. Lire -> Découvrez Windows Vista, La F.A.Q Windows Vista
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 16h05   #1
Membre du Club
 
Inscription : juillet 2004
Messages : 200
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 200
Points : 67
Points : 67
Par défaut Fichier détruit existe encore

Bonjour

je développe une application qui fonctionne sans pb sur toutes les versions de Windows sauf Vista (mais pas de pb avec seven).

Pour deboguer j'ai besoin d'éditer dans un fichier de configuration, placé dans le répertoire CommonAppData obtenu par une API. Sur Vista ce répertoire est C:\ProgramData\ que je suffixe avec le nom de l'appli soit C:\ProgramData\Appli.

Si je cherche à modifier avec Notepad le fichier C:\ProgramData\Appli\Config.ini Vista refuse d'enregistrer le fichier. J'enregistre le fichier ailleurs, puis je détruis l'original le remplace par celui modifié. Je détruis aussi la copie placée dans le répertoire ...Roaming

Je relance mon application qui se comporte toujours comme si elle ouvrait l'ancienne version du fichier config.ini. Je détruis le fichier C:\ProgramData\Appli\Config.ini, relance l'application, elle se comporte toujours de la même façon, c'est à dire comme si le fichier existait toujours. Je fais une recherche sur l'ensemble du disque, le fichier n'apparait plus que dans la corbeille.

Autrement dit, le fichier existe du point de vue de l'application, mais l'explorateur ne le voit plus nul part.
frantzgac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 23h01   #2
Membre du Club
 
Inscription : juillet 2004
Messages : 200
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 200
Points : 67
Points : 67
Je continue à chercher et vous tient au courant.

J'ai -après un boot- retrouvé un fichier nommé config.ini dans
Utilisateurs\<user>\AppData\Local\VirtualStore\ProgramData\<Appli>

et cela m'a rappellé un post de shawn12
Citation:
Depuis Vista, Windows intègre une nouvelle protection des dossiers et fichiers systèmes (nottament le dossier "Program files" ou "Programmes").

Pour cela le système utilise une sorte de principe de "virtualisation des fichiers".

Aucun utilisateur (compte limité ou admin) ne peut écrire dans les dossiers protégés de windows sans élévation de privilège.

Afin d'éviter les problèmes de compatibilité que cela aurait pu générer, lorsqu'un programme (comme le tien) essaie d'écrire dans un répertoire protégé, Windows 7 ne provoque pas d'erreur et "simule" l'écriture du fichier dans program files/Ton Groupe/Ton programme/. En réalité, comme il est interdit d'y écrire réellement, il les stocke dans un "virtual store" situé dans "C:\Users\nom_utilisateur\AppData\Local\VirtualStore\Program Files\Ton groupe\Ton programme.".
C'est pour cela que chaque utilisateur a un fichier différent.

Tu peux d'ailleur le voir dans l'explorateur windows. Si tu va dans le dossier protégé dans lequel se situe ton fichier cfg, tu verra apparaitre un bouton "fichiers de compatibilité" qui te renverra vers le virtual store.

Essaie d'écrire ton fichier config dans un répertoire partagé accessible à tous les utilisateurs (tu leur donne les droits) et qui ne soit pas protégé par windows
Mais shawn12 parle de virtualisation des écritures dans C:\Program Files alors que mon application récupère le répertoire CommonAppData par l'API
(SHGetSpecialFolderPath(NULL, p, CSIDL_COMMON_APPDATA, 0)), y lit le fichier config.ini qui se trouve bien dans C:\ProgramData\<Appli> mais lorsque l'appli est refermée, le fichier contenant la sauvegarde de contexte est virtualisé.

Comment se fait il que Vista virtualise une écriture dans un répertoire, qui sauf erreur de ma part, est accessible en écriture ?
frantzgac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h36.


 
 
 
 
Partenaires

Hébergement Web