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 :

Données modifiables incorporées dans l'executable.


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut Données modifiables incorporées dans l'executable.
    Bonjour,
    Pour qu'un programme dispose d'un paramétrage (taille de la fenêtre principale, etc, etc), on peut placer un fichier de configuration dans le dossier de l'executable, par exemple, ou alors farcir la base de registre, mais pour faire vraiment propre, il n'y a pas moyen d'incorporer les données dans l'executable lui-même ?

    Avec les ressources, on peut placer des données dans l'executable, mais avec FindResource, LoadResource et LockResource, on ne peut avoir qu'un pointeur sur une copie de l'information. On ne peut pas modifier ces données.
    Y a-t-il une solution autre que cet affreux bidouillage :
    - créer une ressource de n octets qui commence par une balise de 4 octets par exemple
    - lors de l'execution du programme, ouvrir l'executable en écriture et rechercher cette balise
    - placer un pointeur fichier sur cette balise, qui indique le début de la mémoire allouée aux données
    ?

    Merci d'avance pour votre aide.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Ben non, l'exécutable est censé être en lecture seule pendant l'exécution...

    Le plus proche de ça qui reste humainement possible, c'est ce que faisaient certains Message Mates quand on les personnalisait: Créer une copie de l'exécutable et modifier les ressources de la copie (BeginUpdateResource() etc.)
    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.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Fio,
    Citation Envoyé par _Michel Voir le message
    Bonjour,
    Pour qu'un programme dispose d'un paramétrage (taille de la fenêtre principale, etc, etc), on peut placer un fichier de configuration dans le dossier de l'executable, par exemple, ou alors farcir la base de registre, mais pour faire vraiment propre, il n'y a pas moyen d'incorporer les données dans l'executable lui-même ?...
    Pour "faire vraiment propre", tu viens d'énoncer les manières d'opérer. Ce que tu cherches à faire est du bidouillage.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Citation Envoyé par droggo Voir le message
    Pour "faire vraiment propre", tu viens d'énoncer les manières d'opérer. Ce que tu cherches à faire est du bidouillage.
    +1
    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
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    4 points différents pour te montrer que cette approche n'est pas très saine :

    1/ Un binaire peut être placé dans un répertoire dont les droits d'accès en écriture sont restreints.

    2/ De plus, si ce binaire est placé sur différentes machines et exécuté de différentes manières avec des configurations différentes, les binaires sur ces 2 machines seront différents alors qu'ils font strictement la même chose.

    3/ Si tu fais une mise à jour de ton binaire avec une nouvelle version, tu vas perdre la configuration des utilisateurs enregistrée dans le binaire.

    4/ Comment est-ce que tu peux gérer sur une machine, une configuration différente par utilisateur.

    Je pense donc comme les autres que c'est une solution "boiteuse" et pas viable.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut
    Je peut même rajouter deux points : si le programme est executé plusieurs fois en même temps, il peut y avoir marchage sur pieds, et si jamais la balise correspond à du code, ça fous tout par terre (même si ça se vois assez vite si c'est le cas).
    C'était juste pour donner un exemple.

    Donc, un fichier de configuration, demeure la solution la moins compliquée, mais connait un de ces désavantage : avec des droits d'accès restreints, la personnalisation n'est pas possible.
    La différence, c'est que l'utilisateru est au courant de ce qui se passe.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Tu sais, tu peux toujours mettre le fichier de configuration dans le dossier Application Data de l'utilisateur... (voir SHGetFolderPath() et CSIDL_APPDATA).

    Ou bien, tout simplement dans la base de registre, section Utilisateur. De toutes façon, dans les deux cas, les données ne seront pas "immédiatement visibles" à côté de l'exécutable...
    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. Sauvegarde de données dynamiques et sensibles dans l'executable
    Par LoST_MiNd dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/02/2008, 21h29
  2. Stockage de données dans un executable
    Par Gandalf dans le forum C++
    Réponses: 8
    Dernier message: 21/12/2007, 19h23
  3. Mise à jour base des données modifiées dans le DataGridView
    Par dolyne.b dans le forum Windows Forms
    Réponses: 9
    Dernier message: 26/04/2007, 15h58
  4. Réponses: 3
    Dernier message: 20/12/2006, 17h59
  5. base de donnée dans l'executable?
    Par judor31 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/01/2006, 13h59

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