begin process at 2012 05 29 17:22:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

System

 > 

Problème gestion base de regsitre en C++ sous vista 64


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème gestion base de regsitre en C++ sous vista 64

mardi 1 décembre 2009 à 14:48:02 | Problème gestion base de regsitre en C++ sous vista 64

gegematic

Bonjour,
j'utilise une librairie pour gérer la base de registre en c, dont l'auteur est :
Code C/C++ :
	
        // Support for the Windows Registry
	// Version 5.10 (1st October)
	// License - Free for any purpose, just do not remove the copyright
	// Copyright (C) 1996-2006 - Jonathan Wilkes


Cette librairie a toujours fonctionné, avec windows Xp, mais sous Vista 64, elle n'arrive pas à a accéder à la clé
HKEY_LOCAL_MACHINE\SOFTWARE
par contre, elle accède sans pb à la clé
HKEY_LOCAL_MACHINE\HARDWARE
J'ai constaté, par regedit, que les autorisations sont différentes pour ces 2 clés.
est-ce que c'est l'explication ?
comment y remédier ?
Merci
Gérald


Code C/C++ :
RegKey NewKey;
	//RegKey::OpenKey(LPCTSTR pszKeyName, bool bCreateIfNoExist /* = false */, HKEY hBaseKey /* = HKEY_CURRENT_USER */, LPCTSTR pszMachineName /* = NULL */)
	if (! NewKey.OpenKey("SOFTWARE", false, HKEY_LOCAL_MACHINE ))
	cout << "clée SOFTWARE trouvée " << endl << endl;
	else
	cout << "clée SOFTWARE non trouvée " << endl << endl;

	//end try with regkey
mardi 1 décembre 2009 à 19:30:41 | Re : Problème gestion base de regsitre en C++ sous vista 64

BruNews

Administrateur CodeS-SourceS
Comme toute surcouche c'est nuisible car ça masque ce qu'il faut faire.
Va voir les params de RegOpenKeyEx sur MSDN et tu comprendras vite qu'i manque l'essentiel dans ta lib prémachée.
HKLM exclusivement en lecture depuis simple prog.
Regarde aussi le flag KEY_WOW64_64KEY.

ciao...
BruNews, MVP VC++
mercredi 2 décembre 2009 à 08:32:56 | Re : Problème gestion base de regsitre en C++ sous vista 64

fregolo52

Membre Club
Par défaut, sur un OS x64, si on fait un RegOpen de HKEY_LOCAL_MACHINE\SOFTWARE\MySoft :
- un process 64bit accède à HKEY_LOCAL_MACHINE\SOFTWARE\MySoft
- un process 32bit accède en réalité à HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySoft

Pour forcer à lire dans la partie 32 ou 64bit, quelque soit l'architecture du soft (32 ou 64bit), il faut faire ce qu'a indiqué BruNews.
mercredi 2 décembre 2009 à 19:32:41 | Re : Problème gestion base de regsitre en C++ sous vista 64

gegematic

Salut,
Merci de cette réponse rapide.
J'avais bien lu des choses à propos de ce Wow6432Node, mais j'avais pas bien saisit.
J'ai pu tester, effectivement, je me retrouve sur Wow6432Node, et la valeur que je cherche à lire ne s'y trouve pas.
Ce qui est idiot, c'est que j'ai simplement besoin de lire, pas d'écrire, donc il faut que je modifie les parametres de la classe OpenKey pour qu'elle spécifie "lecture seule".
J'ai essayé avec les 2 options :

Code C/C++ :
if (! clAutocad.ouvrir(HKEY_LOCAL_MACHINE,"SOFTWARE",KEY_ALL_ACCESS))//version originale

if (! clAutocad.ouvrir(HKEY_LOCAL_MACHINE,"SOFTWARE",KEY_READ))//ne donne rien de mieux

if (! clAutocad.ouvrir(HKEY_LOCAL_MACHINE,"SOFTWARE",KEY_WOW64_64KEY))//ne marche pas !


Je suis allé voir RegOpenKeyEx sur MSDN, et je n'ai rein vu de particulier concernant mon problème
par contre sur cette page :
Registry Key Security and Access Rights
mais je ne comprends pas les explications.

maintenant, c'est assez compliqué pour moi, je ne programme pratiquement qu'en lisp, et un peu en VB, sous la torture.
ce que je cherche, c'est une librairie qui integre cette nouveauté des Os 64, et qui me permette de faire marcher ce petit bout de prog.
Merci

mercredi 2 décembre 2009 à 21:09:00 | Re : Problème gestion base de regsitre en C++ sous vista 64

BruNews

Administrateur CodeS-SourceS
KEY_WOW64_64KEY | KEY_QUERY_VALUE
en 4eme param.

S'il te faut une lib pour 3 fonctions, t'es pas rendu.
RegOpenKeyEx
RegQueryValueEx
RegCloseKey

ciao...
BruNews, MVP VC++
jeudi 3 décembre 2009 à 19:52:18 | Re : Problème gestion base de regsitre en C++ sous vista 64

gegematic

merci des réponse, mais tant pis, je ne comprend pas, je n'y arrive pas.
la classe clAutocad.ouvrir ne fait rien d'autre qu'un RegOpenKeyEx, mais elle n'accepte pas les parametres
(! clAutocad.ouvrir(HKEY_LOCAL_MACHINE,"SOFTWARE",KEY_WOW64_64KEY | KEY_QUERY_VALUE )
et moi je n'arrive pas a le refaire par un :
Code C/C++ :
	long resu;
	long laCle;

resu=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE",0,KEY_QUERY_VALUE);
	if (resu==ERROR_SUCCESS)
		initialisee=TRUE;
	return initialisee;

ça, ça ne marche pas à cause de "lacle".

en fait, je ne cherche pas vraiement à programmer en c, mais simplement à maintenir en fonctionnement un programme qui m'était bien utile, mais que je n'arrive plus à comprendre ...

salut,
Gégé



Cette discussion est classée dans : base, code, hkey, software, endl


Répondre à ce message

Sujets en rapport avec ce message

sql et c++ [ par gogeta2003 ] Bonjour, J'ai un petit problème, je voudrais insérer des valeurs dans ma base de donnée en passant par un edit, du genre: mySQL=mysql_init(NULL);<br Aide : Patch anti sasser.b [ par juki_webmaster ] Bonjour,Je me suis remis au developpement c++ sous dev cpp 4.Je realise un patch contre sasser.b.worm, en suivant l'indication ;http://www.symantec.co Manipulation de la base de registre [ par yserver ] Mon pb est pour ecrire des clefs ds la base de registe. Il s'agit de plusieurs types different il uy en a en tout 26. J'ai donc utilise un tableau de Code C++ pour se connecter à une base SQL [ par Poolman ] Voila J'aimerais savoir si quelqun pourrait m'envoyer le code permettant d'acceder à une base de donnée via internet, j'utilise DOBC.... Merci d'avanc ecrire une valeur dans la base de registre [ par yerosnimus ] bonjour,en dépit de toute la littérature trouvée sur ce site concernant l'écriture de clé dans la base de registre windows, je n'y arrive pas ou pas t Base de données MYSQL [ par JR07 ] Je voudrais savoir si quelqu'un aurait du code avec des requêtes Mysql, qui permettent d'écrire et de lire dans une base de données. Le code que je so trie des colonnes dans listview [ par demo42 ] bonjours j' ai une base de données mysql et je voudrai trier ma listview encliquant sur une colonne.. comment faire sans faire intervenir la base de d probleme création d'une clé de registre [ par stefbuet ] Salut, en regardant les sources du site, j'ai réussi à extraire un pti bou de code mais sa ne marche pas completement:en effet, le chemin mycompagny/m Software pour optimiser du code [ par serialtom ] Salut a tous !Existe il un software qui permet de reperer les calculs ou operations gourmandes en temps de calcul ? (de preference un freeware ...)mer SQLCHAR en char [ par jerem3000 ] Bonjours, Je développe actuellement un petit logiciel qui accède a une base de donnée accès. Le problème est que je récupère les donnée de la base av


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,342 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales