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

MFC Discussion :

[registry] pb d'accès et de fichiers


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 13
    Points : 6
    Points
    6
    Par défaut [registry] pb d'accès et de fichiers
    Bonjour,

    Je dois pour un programme recupéré un élément de la Base de registre.
    Je développe sous visual C++ .NET

    Je me suis rencardé sur la FAQ C++ builder
    http://c.developpez.com/faq/bcb/?page=systemeregistre
    mais mon soucis viens du fait que je ne dispose apparement pas du header registry.hpp

    J'ai trouvé registry.h et .cpp dans l'arborescence de visual
    j'ai donc essayé de faire un include du header mais fichier non trouvé par visual.
    J'ai copié les fichier sur mon rep de travail et j'ai include les fichiers avec succès mais au moment de la création d'un element "registre" dans mon code avec la syntaxe ci-dessous,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRegistry *registre = new TRegistry();
    j'ai droit à une erreur de syntaxe

    Y-a-t'il quelqu'un qui me renseigner s'il vous plait ?
    Merci par avance

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    je crois que tu melanges un peu tout bcb et VC .
    pour vc.net ,le .h cité ne concerne en rien un classe de gestion de la base de registre .
    pour travailler avec la base de registre utilise les apis32
    ou sinon si c'st possible importe le fichier source et .h de bcb .
    tout depend de ce que tu cherches a faire..


  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci de ta réponse
    oui dsl je crois en effet que je mélange un peu

    en fait, je développe une application en mode console sous VC
    Cette appli s'incrit dans la base de registre pour se relancer automatiquement à chaque reboot du système.

    Au démarrage de l'appli, elle doit charger des infos à partir de fichiers texte se trouvant dans le même repertoire que l'appli.

    Le problème viens que windows lance l'appli avec le bon chemin mais reste dans son répertoire initial et donc l'appli ne trouve pas les fichiers

    Donc j'avais pensé recupéré le chemin a partir de l'information de la base de registre. ( ou alors il faudrait que l'appli recupère à son lancement son chemin afin d'aller chercher les fichiers au bon endroit )

    Par contre si tu as une autre solution... je veux bien prendre.

  4. #4
    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
    Eh bien... Pour avoir accès au registre avec l'API Windows, va voir du coté de s fonctions RegOpenKeyEx(), ReqSetValueEx(), RegQueryValueEx() et RegCloseKey()...
    Cela devrait être suffisant pour mémoriser un chemin de répertoire (genre répertoire d'installation), et le récupérer ensuite...
    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.

  5. #5
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Ou utiliser la classe CRegKey définie dans <atlbase.h>
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    il y a un truc pas clair dans ton probleme.
    c'est dans le parametrage du raccourci que l'on indique le repertoire d'execution du programme (ou dans le batch etc..).
    donc si le repertoire est bien renseigné je ne vois pas ton probleme.

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci tout le monde et salut Farscape,

    en fait il n'y a pas de soucis avec le chemin du programme en lui même.
    Il se lance sans problème mais sur mon serveur de test par exemple, à l'heure actuelle, lorsque le serveur reboot, il relance bien l'application avec le bon chemin mais le serveur est sur le repertoire c:\ et donc l'application cherche les fichier .txt qui lui sont nécessaire dans le répertoire C:\ au lieu du répertoire de l'application.

    Du fait que l'appli ne sera jamais au même endroit sur le serveur, je ne peux pas mettre de chemin statique ... ainsi, recupérer le chemin spécifié au niveau de la base de registre me parait être la seule solution (le chemin de l'appli s'incrit dans la base de registre au premier démarrage de celle-ci qui se fait en cliquant sur un shortcut.).

    ( j'ai pensé aussi au fait que peut-être l'appli pourrait recupérer directement son chemin complet mais je ne vois pas trop comment faire ça )

    Si il y en a une autre, je suis preneur
    Merci les gars

  8. #8
    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
    Citation Envoyé par Le_magicien999
    ( j'ai pensé aussi au fait que peut-être l'appli pourrait recupérer directement son chemin complet mais je ne vois pas trop comment faire ça )
    Si tu es en mode console, tu prends directement argv[0] jusqu'au dernier antislash
    Sinon, tu fais un GetModuleFileName(NULL) et là encore, tu vas jusqu'au dernier antislash...
    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.

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323

  10. #10
    Futur Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci

    ça marche

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

Discussions similaires

  1. [TOMCAT] Comment empêcher l'accès direct aux fichiers
    Par thomine dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 14/04/2005, 10h19
  2. [VB.NET] Accès concurrentiel aux fichiers
    Par david71 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 13/12/2004, 11h19
  3. Réponses: 5
    Dernier message: 07/05/2004, 09h44
  4. problème d'acces concurentiel à un fichier
    Par Theoden dans le forum MFC
    Réponses: 2
    Dernier message: 04/03/2004, 09h49
  5. Chemin d'accès d'un fichier
    Par guitaros dans le forum Langage
    Réponses: 6
    Dernier message: 16/01/2004, 09h27

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