Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1292 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  VC++, Base de registres et installshield

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VC++, Base de registres et installshield

n°255944
pavlov
Posté le 28-11-2002 à 10:55:56  profilanswer
 

Bonjour,
j'ai un programme qui doit lire une clé dans la base de registre.
Cette clé est crée lors de l'installation du soft par un programme installshield. Elle se trouve à l'emplacement suivant: "HKEY_CURRENT_USER\\Software\\my_company\\mon_soft\\Install\\Repertoire"  (Repertoire est le nom de ma clé et contient un chemin vers un fichier a ouvrir)
 
Sous win2000 je suis obligé d'installé mon soft en admin et lorsque j'exécute ensuit mon programme sous un autre utilisateur, le programme ne trouve pas la clé, je suis obligé de l'éxécuter en admin pour qu'il l'a trouve.
 
 
Doit-je placer ma clé ailleurs ?
 
 
Voici comment le programme lit la clé:
 
SetRegistryKey(_T("my_company" ));
free((void*)m_pszProfileName);    
m_pszProfileName=_tcsdup(_T("mon_soft" )); Path=theApp.GetProfileString("Install","Repertoire",_T("c:\\Program Files\\nom_du_soft\\" ));
 
ps: Je n'y comprend pas grand chose, car c'est un travail que j'ai repris après un stagiaire.

mood
Publicité
Posté le 28-11-2002 à 10:55:56  profilanswer
 

n°255978
gatorette
Posté le 28-11-2002 à 11:31:44  profilanswer
 

pavlov a écrit a écrit :

Elle se trouve à l'emplacement suivant: "HKEY_CURRENT_USER\\Software\\my_company\\mon_soft\\Install\\Repertoire"
...
Doit-je placer ma clé ailleurs ?
...




 
Comme tu peux le voir, ta clé est dans HKEY_CURRENT_USER qui contient les paramètres de l'utilisateur en cours. C'est à dire que quand tu installes ton soft en tant que l'utilisateur "Administrateur", la clé n'est installée que pour cet utilisateur.
Il te faut donc trouver un autre endroit commun à tous les utilisateurs ou un moyen de copier cette clé sur tous les comptes (selon ce que tu souhaites). Au vu de la clé que tu cherches à obtenir, j'ai l'impression que la première solution est plus adaptée.
 
1. Clé commune à tout le monde:
Ici, il s'agit de la clé "HKEY_LOCAL_MACHINE" qui est utilisée. Evidemment, elle contient tout ce qui est spécifique à la machine. Elle doit être utilisée pour stocker des informations qui ne doivent pas changer selon l'utilisateur (par exemple, le chemin d'installation du programme). Dans ton cas, le chemin complet serait : "HKEY_LOCAL_MACHINE\Software\my_company\mon_soft\Install\Repertoire". Par contre, tu es obligé de changer le code du programme car il n'y a pas de fonctions toutes faites dans l'API Windows pour accéder à ces clés (tu peux trouver partout sur le net des fonctions toutes prêtes).
 
2. Copie de la clé à tous les utilisateurs:
Il faut utiliser cette stratégie si on souhaite proposer une option que chaque utilisateur peut modifier. Un exemple simple dans Windows est l'économiseur d'écran qui est propre à chaque utilisateur. Pour cela, tu doit énumérer les "sous-clés" de HKEY_USERS qui contient les paramètres de tous les utilisateurs et les paramètres par défaut (ceux qui sont utilisés lors de la création d'un nouvel utilisateur). HKEY_CURRENT_USER est une image de ces paramètres (je ne sais pas si c'est une copie ou un "pointeur" ). Pour ton cas tu aurais quelque chose du genre "HKEY_USERS\.DEFAULT\Software...", "HKEY_USER\X-X-XX-XXXXX\Software...", etc. Et ici, pas besoin de changer le code dans le programme.


---------------
each day I don't die is cheating
n°256013
pavlov
Posté le 28-11-2002 à 12:05:19  profilanswer
 

gatorette a écrit a écrit :

 
 
Comme tu peux le voir, ta clé est dans HKEY_CURRENT_USER qui contient les paramètres de l'utilisateur en cours. C'est à dire que quand tu installes ton soft en tant que l'utilisateur "Administrateur", la clé n'est installée que pour cet utilisateur.
Il te faut donc trouver un autre endroit commun à tous les utilisateurs ou un moyen de copier cette clé sur tous les comptes (selon ce que tu souhaites). Au vu de la clé que tu cherches à obtenir, j'ai l'impression que la première solution est plus adaptée.
 
1. Clé commune à tout le monde:
Ici, il s'agit de la clé "HKEY_LOCAL_MACHINE" qui est utilisée. Evidemment, elle contient tout ce qui est spécifique à la machine. Elle doit être utilisée pour stocker des informations qui ne doivent pas changer selon l'utilisateur (par exemple, le chemin d'installation du programme). Dans ton cas, le chemin complet serait : "HKEY_LOCAL_MACHINE\Software\my_company\mon_soft\Install\Repertoire".  




 
Merci pour ton aide.
Je pense aussi que la première solution est le meilleur.
J'ai déjà fait quelques essais avec HKEY_LOCAL_MACHINE et "HKEY_USERS\DEFAULTS" mais je crois que je me suis planté dans la lecture.
 
 
 

Citation :


Par contre, tu es obligé de changer le code du programme car il n'y a pas de fonctions toutes faites dans l'API Windows pour accéder à ces clés (tu peux trouver partout sur le net des fonctions toutes prêtes).

 
 
Je vais cherché, mais si quelqu'un sur ce forum pouvait me donner une piste, ce serai sympa.


Message édité par pavlov le 28-11-2002 à 12:05:37

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  VC++, Base de registres et installshield

 

Sujets relatifs
Delphi et base de donnéesconnexion distante a une base de données par modem
récupérer un pwd dans une base MySQL[HELP] Prog pour la base oc Hardware.fr
utilisation d un formulaire avec interaction d une base odb[ODBC] Pb avec la base
Modifier une clé de la base de registre depuis ACCESS ?[Access] Modifier une base de données
[Oracle] On fait comment pour supprimer la totalite d'une base[InstallShield] Un bon bouquin pour apprendre
Plus de sujets relatifs à : VC++, Base de registres et installshield


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR