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

API, COM et SDKs Delphi Discussion :

Ecriture, lecture de la base de registre sous vista


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Par défaut Ecriture, lecture de la base de registre sous vista
    Bonsoir,

    J'essaye d'écrire et de lire des valeurs dans la base de registre dans HKEY_CLASSES_ROOT et à l'exécution j'ai le message "Echec à la création de la clef HKEY_CLASSES_ROOT\numero ". Mon système d'exploitation est windows VISTA.

    Auriez-vous la solution à ce problème ? Je vous en remercie par avance.

    Vous souhaitant une bonne soirée

    Bien cordialement

    Laurent CUSSAC

  2. #2
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    C'est une histoire de droit d'écriture.

    Pour l'écriture, c'est juste pour une installation ou pour le déroulement normal du programme (ce qui me paraît illogique)?

    Si c'est pour une installation, exécuter l'application en administrateur devrait résoudre le problème, il me semble.

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Choisis une autre clé racine.
    Sur HKEY_CURRENT_USER ou HKEY_LOCAL_MACHINE aucun problème (je n'ai pas testé les autres).

  4. #4
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    HKEY_LOCAL_MACHINE doit être en lecture seule si l'uac est activée et que le programme n'est pas lancé en administrateur, non?

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Je n'ai testé que HKEY_CURRENT_USER sous cette m. de Vista.

  6. #6
    Membre éclairé

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    618
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 618
    Par défaut
    Administrateur ou pas, il faut que ton programme demande une élévation de privilège pour pouvoir écrire dans HKEY_CLASSES_ROOT.

    Pour être certain que c'est cela : compile ton programme ; fait un clic droit sur le .EXE et dans le menu choisi "Exécuter en tant qu'administrateur".

    Pour que ton programme demande une élévation de privilège automatiquement, il faut inclure à l'EXE une ressource du type :

    fichier MonProgramme.RC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1 24 "MonProgramme.manifest"
    Fichier MonProgramme.manisfest doit être qq chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity
        version="5.1.2.0"
        processorArchitecture="*"
        name="MonProgramme"
        type="win32"/>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator"/>
          </requestedPrivileges>
        </security>
      </trustInfo>
    </assembly>
    Tu compile le .RC en .RES et inclu le .RES à ton projet à l'aide de {$R ..... }

    Si ta manipulation de HKEY_CLASSES_ROOT est ponctuelle, il vaut mieux la déplacer dans un EXE à part, car sinon, sous Vista, l'élévation de privilège (avec son écran grisé) va être demandé à chaque lancement de ton programme.

    Attention, si on tente de manipuler HKEY_CLASSES_ROOT sans élévation, pour assurer une compatibilité ascendente, les opérations vont être redirigé vers KEY_CURRENT_USER\...\Roaming\.... (je ne sais plus le chemin exact).

    Du coup on se retrouve 2 fois avec la même clé, et en mode read-only, élevé ou pas, on ne sais plus trop quelle clé est utilisé par son programme.
    Donc quand on ouvre HKEY_CLASSES_ROOT en read-write, il faut à tout prix demander l'élévation de privilège pour éviter ce phénomène de roaming.

    En mode read-only/non élevé, le programme regarde d'abord dans HKEY_CLASSES_ROOT et en cas d'absence de la clé regarde dans le Roaming de HKEY_CURRENT_USER.

    Cordialement

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Par défaut
    Bonsoir à tous et merci pour tous vos renseignements.

    Une petite question pour Vanquish : le 1 24 signifie quoi ?

    Bonne soirée

    Laurent

  8. #8
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Citation Envoyé par ninaleo Voir le message
    Une petite question pour Vanquish : le 1 24 signifie quoi ?
    La 1° valeur est l'identificateur de ressource (ResID).
    La 2° est le type de ressource (ResType). 24 correspond à une ressource de type Manifest.

    @+ Claudius

Discussions similaires

  1. [WD5.5] Base de registre sous Vista
    Par grimbd dans le forum WinDev
    Réponses: 6
    Dernier message: 24/07/2007, 13h21
  2. base de registre sous vista
    Par Maitre Dragon dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/06/2007, 10h04
  3. Ecrire et lire sur la base de registre sous windows
    Par brackaman dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 13/11/2006, 09h50
  4. Obtenir les droits d'ecriture dans fichiers et base de registre
    Par Sunchaser dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 17/07/2006, 11h33
  5. Réponses: 2
    Dernier message: 12/07/2006, 16h45

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