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 :

Choisir la bonne clé dans la base de registre


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut Choisir la bonne clé dans la base de registre
    Bonjour,
    J'écris une clé et des valeurs dans la base de registres sous HKEY_LOCAL_MACHINE\SOFTWARE\RVReefTools en VB6.

    Je trouve bizarre qu'avec la version IDE (debug) de VB6 je trouve ma clé sous
    HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\RVReefTools

    et quand je compile le programme je la retrouve sous
    HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\RVReefTools

    N'y a-t-il pas moyen de choisir un emplacement tel que je retrouve bien ma clé à cet endroit ?
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Ton application ne contient pas de manifest (ce qui donne le niveau de compatibilité avec l'OS). Windows part du principe qu'elle est ancienne et écrit probablement ou elle ne devrait pas (ex. Program Files sur le disque ou HKLM en BdR).
    Mais pour que ces anciennes apps soient toujours utilisables sous Vista et plus (depuis l'arrivée de l'UAC), il redirige les accès dans le Virtual Store où l'écriture est autorisée (sinon tu recevrais un access denied). Il te suffit donc d'ajouter un manifest pour éviter cela.

    Mais le manifest va uniquement empêcher la virtualisation, écrire sous HKLM comme tu le fais requiert des droits administrateurs (élévation de privilèges). Je ne pense pas que c'est ce que tu veux

    Quant à Wow6432Node, c'est la racine standard utilisée par les apps 32 bits sur un système 64.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta réponse, en fait la redirection ne me dérange pas mais tu ne réponds pas à ma question :

    J'écris ma clé vers HKEY_LOCAL_MACHINE\SOFTWARE
    pourquoi est-ce que je la retrouve
    dans HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node si je l'écris en VB6 IDE
    dans HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node si je l'écris en VB6 compilé ?

    De plus si j'écris la clé avec par exemple la version IDE et que je la lis avec la version compilée j'ai l'impression que je retrouve la même !

    En fait ça m'est égal de l'écrire dans HKEY_CLASSES_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER ou HKEY_CURRENT_CONFIG
    d'où ma question subsidiaire : quel endroit choisir pour que je puisse retrouver mes jeunes ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Citation Envoyé par Herve_be Voir le message
    ...mais tu ne réponds pas à ma question :
    VirtualStore si l'application n'est pas manifest-ée et Wow6432Node si c'est une application 32 bits exécutée sur un système 64 bits

    Citation Envoyé par Herve_be Voir le message
    De plus si j'écris la clé avec par exemple la version IDE et que je la lis avec la version compilée j'ai l'impression que je retrouve la même !
    Parce que les redirections sont gérées par Windows, c'est totalement transparent pour l'application. C'est uniquement emmerdant pour retrouver manuellement la clé dans la base des registres.


    Citation Envoyé par Herve_be Voir le message
    quel endroit choisir pour que je puisse retrouver mes jeunes ?
    HKEY_CURRENT_USER uniquement.

  5. #5
    Inactif  
    Homme Profil pro
    Analyste/Programmeur
    Inscrit en
    Novembre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste/Programmeur

    Informations forums :
    Inscription : Novembre 2018
    Messages : 18
    Points : 0
    Points
    0
    Par défaut Une API Microsoft serait l'idéal
    Avec l'accronyme API qui fleurie un peu partout, je me demande si une API Microsoft n'est pas déjà à disposition pour faire ce que l'on veux sur notre propre ordinateur, quand même.

    Internet étant un autre sujet.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    C'est gentil de vouloir m'aider, c'est la première fois que je "joue" avec le registre, merci d'excuser mes questions naïves.
    Citation Envoyé par Andnotor Voir le message
    Citation Envoyé par Herve_be Voir le message
    tu ne réponds pas à ma question :
    J'écris ma clé vers HKEY_LOCAL_MACHINE\SOFTWARE
    pourquoi est-ce que je la retrouve
    dans HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node si je l'écris en VB6 IDE
    dans HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node si je l'écris en VB6 compilé ?
    VirtualStore si l'application n'est pas manifest-ée et Wow6432Node si c'est une application 32 bits exécutée sur un système 64 bits
    Je ne comprends toujours pas : que ce soit en IDE ou compilé la clé arrive toujours en xxx\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node : OK.
    Mais en IDE xxx = HKEY_CURRENT_USER
    quand c'est compilé xxx = HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001
    Même si S-1-5-21 serait le SID de l'utilisateur courant pourquoi cette différence entre la version IDE et la version compilée ?
    Citation Envoyé par Andnotor Voir le message
    Citation Envoyé par Herve_be Voir le message
    De plus si j'écris la clé avec par exemple la version IDE et que je la lis avec la version compilée j'ai l'impression que je retrouve la même !
    Parce que les redirections sont gérées par Windows, c'est totalement transparent pour l'application. C'est uniquement emmerdant pour retrouver manuellement la clé dans la base des registres.
    Veux-tu dire qu' on peut utiliser indifférement HKEY_CURRENT_USER et HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001 ?
    Citation Envoyé par Andnotor Voir le message
    Citation Envoyé par Herve_be Voir le message
    quel endroit choisir pour que je puisse retrouver mes jeunes ?
    HKEY_CURRENT_USER uniquement.
    Si j'ai bien compris la clé est différente par utilisateur, HKEY_CURRENT_USER est équivalent à HKEY_USERS\nom_de_l’utilisateur.
    en d'autres termes si j'ai 2 utilisateurs sur la même machine chaque utilisateur aura sa propre clé, exact ?

    Edit : je viens d'essayer avec HKEY_CURRENT_USER : avec Regedit je retrouve bien ma clé à cet endroit aussi bien en IDE qu'avec la version compilée.
    Mon problème est donc résolu ce qui n'empêche que je reste intéressé par les réponses à mes questions ci-dessus, avec un tout grand merci.

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Citation Envoyé par Herve_be Voir le message
    Mais en IDE xxx = HKEY_CURRENT_USER
    quand c'est compilé xxx = HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001
    HKEY_CURRENT_USER est un alias (un raccourci) sur la clé HKEY_USERS\S-1-5-21-xxx de l'utilisateur courant. Tu devrais donc retrouver la même information que tu accèdes par l'un ou par l'autre.
    Il n'y a pas de raison que ce soit différent à travers l'IDE ou en direct.

    Citation Envoyé par Herve_be Voir le message
    Veux-tu dire qu' on peut utiliser indifférement HKEY_CURRENT_USER et HKEY_USERS\S-1-5-21-2581077279-292536661-1282839472-1001 ?
    On pourrait mais ce serait du travail supplémentaire pour déterminer le SID de l'utilisateur alors que HKEY_CURRENT_USER pointe déjà dessus.

    Citation Envoyé par Herve_be Voir le message
    Si j'ai bien compris la clé est différente par utilisateur, HKEY_CURRENT_USER est équivalent à HKEY_USERS\nom_de_l’utilisateur.
    en d'autres termes si j'ai 2 utilisateurs sur la même machine chaque utilisateur aura sa propre clé, exact ?
    C'est ça.

    Tu peux facilement les lister par l'invité de commandes : wmic useraccount get name,sid (tu constateras qu'il y a aussi d'autres comptes que les utilisateurs que tu as effectivement créés).

    Citation Envoyé par galere42 Voir le message
    je me demande si une API Microsoft n'est pas déjà à disposition pour faire ce que l'on veux sur notre propre ordinateur, quand même.
    Les API concernent le développeur, l'utilisateur ne peut rien faire avec

    Pour éviter la virtualisation, l'ajout du manifest suffit.
    Pour éviter les redirections, le mieux serait encore de compiler en 64 bits !

    Mais oui, des API existent. Pour le système de fichier : Wow64DisableWow64FsRedirection mais attention aux effets de bord, principalement au niveau du chargement des DLL (puisqu'on ne pointera plus sur des répertoires 32 bits mais des 64) !

    Pour la BdR, c'est au niveau de la création de la clé qu'il faut agir à l'aide des paramètre KEY_WOW64_64KEY/KEY_WOW64_32KEY.

    Après, un standard a été fixé (bon ou mauvais) pour les apps 32 bits. Ce que j'énumère ci-dessus peut dépanner mais ne devrait pas être systématiquement appliqué

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 168
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Tu peux facilement les lister par l'invité de commandes : wmic useraccount get name,sid (tu constateras qu'il y a aussi d'autres comptes que les utilisateurs que tu as effectivement créés).
    Exact, moi c'est RCL, les autres ... ?
    Name SID
    Administrateur S-1-5-21-2581077279-292536661-1282839472-500
    DefaultAccount S-1-5-21-2581077279-292536661-1282839472-503
    HomeGroupUser$ S-1-5-21-2581077279-292536661-1282839472-1002
    Invité S-1-5-21-2581077279-292536661-1282839472-501
    RCL S-1-5-21-2581077279-292536661-1282839472-1001
    UpdatusUser S-1-5-21-2581077279-292536661-1282839472-1004
    WDAGUtilityAccount S-1-5-21-2581077279-292536661-1282839472-504

    J'ai fait plusieurs tests sur différents PC en utilisant HKEY_CURRENT_USER : ça marche, je veux dire qu'avec Regedit je trouve bien ma clé à cet endroit, pas de redirection.

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

Discussions similaires

  1. [VB6]ecrire une chaine de byte dans la base de registre
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 17/12/2008, 10h50
  2. Probleme ecriture dans la base de registre
    Par Deton@tor dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/04/2008, 15h03
  3. Réponses: 18
    Dernier message: 30/09/2005, 09h30
  4. Réponses: 16
    Dernier message: 22/03/2005, 21h57
  5. Impossible d'inscrire un ocx dans la base de registre
    Par tomtom7 dans le forum Windows XP
    Réponses: 4
    Dernier message: 31/01/2005, 09h29

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