VC++, Base de registres et installshield

VC++, Base de registres et installshield - C++ - Programmation

Marsh Posté le 28-11-2002 à 10:55:56    

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.

Reply

Marsh Posté le 28-11-2002 à 10:55:56   

Reply

Marsh Posté le 28-11-2002 à 11:31:44    

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
Reply

Marsh Posté le 28-11-2002 à 12:05:19    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed