IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Dossier AppData inaccessible ?


Sujet :

Windows

  1. #1
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut Dossier AppData inaccessible ?
    Bonjour,

    J'ai qques soucis liés aux répertoires de stockages de données utilisateur que je n'arrive pas à résoudre.

    Je développe sous XP ou Seven connecté en admin et sans UAC, ensuite je teste mes softs sur des comptes user (limités au max, avec UAC). Et là je n'arrive pas à identifier un dossier "universel" pour stocker des fichiers tels que les paramètres, une base de données, etc.

    Prenons l'exemple d'un fichier paramètres (xml) : je ne veux pas un fichier/utilisateur mais un fichier commun à tous. Donc de même pour le dossier, il doit être accessible à tous. Si j'en crois le MSDN il me faut ainsi utiliser CSIDL_COMMON_APPDATA, or connecté en simple user je ne peux accéder au dossier concerné (dans ce cas sous XP : C:\Documents and Settings\All Users\Application Data\{mon appli}) ni à partir de mon logiciel (tentative d'écriture d'un simple fichier texte), ni même à partir de l'explorateur Windows (accès refusé).

    J'envisage cette solution (Delphi) (cf tout en bas) mais si je pouvais éviter le bidouillage je préfèrerais.

    Alors je viens vers vous pour savoir :
    > quel(s) dossier(s) utilisez-vous pour stocker des paramètres ?
    > et une base de données ? (le tout en local)

    Par ailleurs j'ai découvert qu'il existe soit disant une virtualisation :
    Lorsque cette application écrit dans un emplacement système (par exemple, le dossier %programfiles%), Windows Vista redirige les opérations d'écriture et de lecture vers un emplacement utilisateur spécifique du dossier du profil utilisateur (%localappdata%\VirtualStore).
    Je ne sais pas si c'est spécifique à Vista mais sous 7 je n'ai rien (enfin le dossier existe mais rien en rapport avec mes applis).

    Merci pour votre aide

  2. #2
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Bon entre temps j'ai trouvé ceci (bien caché !!) :
    If an application requires normal Users to have write access to an application specific subdirectory of CSIDL_COMMON_APPDATA, then the application must explicitly modify the security on that sub-directory during application setup. The modified security must be documented in the Vendor Questionnaire.
    C'est à dire que durant le setup on autorise son appli à accéder à un sous-dossier de CSIDL_COMMON_APPDATA, et que ce droit sera enregistré ?
    Un peu usine à gaz... et je ne demande même pas ce qu'est ce "Vendor Questionnaire"

    Enfin si qqun sait déjà faire ça avec InnoSetup je suis preneur.

  3. #3
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    Question bête : Si il n'y a pas de modif propre au user, pourquoi ne pas profite de ton dossier d'installe genre :


    > quel(s) dossier(s) utilisez-vous pour stocker des paramètres ?
    > et une base de données ? (le tout en local)

    propre à l'utilisateur : C:\Documents and Settings\User1\Application Data\mon appli

    commun à tous les utilisateurs : perso j'opterais simplement pour :
    c:\program files\mon appli\config\
    c:\program files\mon appli\bdd\

    pour info le All Users n'est accecible en ecriture que pour les admins
    c'est trop impactant pour confier cela aux users.

  4. #4
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Merci de ta réponse.
    Si justement il y a des modifs user : le fichier de paramètres en particulier (lu mais surtout écrit). De même la connexion à la BD (Firebird) en lecture seule est impossible (I/O errors).

    De plus Program Files est absolument à éviter, c'est écrit aux 4 coins du MSDN

    Bon je procède comme décrit précedemment, avec Inno Setup je rajoute pour chaque ligne (= fichier) concernée de la section [Files] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Permissions: everyone-modify;
    J'utilise le dossier CSIDL_COMMON_APPDATA qui correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    XP : C:\Documents and Settings\All Users\Application Data\...
    
    Vista & Seven : C:\ProgramData\...

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Attention, il faut bien mettre ça dans un sous-dossier de CSIDL_COMMON_APPDATA, sinon tu donnes les droits sur tout le dossier à tous, et ce n'est pas le but de la manœuvre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dossier partagé inaccessible sur le réseau
    Par fafa63 dans le forum Réseau
    Réponses: 1
    Dernier message: 17/10/2014, 15h55
  2. Réponses: 0
    Dernier message: 20/02/2014, 18h58
  3. [VB.NET] accès au dossier Appdata à partir d'un service windows
    Par ngatchou dans le forum Services Windows
    Réponses: 1
    Dernier message: 29/12/2011, 09h47
  4. Dossier partagé inaccessible
    Par yann458 dans le forum VirtualBox
    Réponses: 3
    Dernier message: 01/11/2011, 14h33
  5. Réponses: 2
    Dernier message: 06/12/2008, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo