ACCÈS À LA BASE DE REGISTRE EN C++ MANAGÉ

gegematic Messages postés 5 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 3 décembre 2009 - 1 déc. 2009 à 18:58
rastalalalolo Messages postés 17 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 15 janvier 2010 - 18 janv. 2010 à 16:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10535-acces-a-la-base-de-registre-en-c-manage

rastalalalolo Messages postés 17 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 15 janvier 2010
18 janv. 2010 à 16:32
Slt Gegematic

voila qq liens qui m ont aider pr le souci partagé que tu rencontres.

pr ecrire de 32bits vers 64 bits le tag KEY_WOW64_64KEY doit etre specifier.
http://msdn.microsoft.com/en-us/library/aa384129%28VS.85%29.aspx

http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2006-05/msg00486.html
http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.kernel/2006-05/msg00515.html

je pensais utiliser ce tag pr voir ma clé apparaitre mais en fait:
le tag KEY_WOW64_64KEY n'est pas util pr ecrire dans SOFTWARE avec une appli 32bits dans un registre 64bits puisque tte les clés crées/utilisés provenant d'appli 32bits se trouve en fait sous une arborescence "Wow6432Node" et non plus dans HKLM\SOFTWARE* :
ex: HKLM\SOFTWARE\Wow6432Node\*

je decouvre comme toi
bon code bonne semaine
gegematic Messages postés 5 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 3 décembre 2009
1 déc. 2009 à 18:58
Bonjour,
sous Vista 64, il semble que cette librairie ne marche pas avec la clé "Software"
voici mon code test :
la partie HARDWARE marche, mais pas la partie SOFTWARE.
Une idée ?
merci

/*
Fonction principale du programme
*/

#include "RegistryForm.h"

int __stdcall WinMain()
{
RegistryForm *MainForm = new RegistryForm;
Application::Run(MainForm); // RegistryForm comme fenêtre principale
return 0; // de l'application
}

#using <mscorlib.dll>
using namespace System;
using namespace Microsoft::Win32;

// Fonction principale de l'application
int main(void)
{
RegistryKey * pRegKey = Registry::LocalMachine;
pRegKey = pRegKey->OpenSubKey(L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");
Object *pValue = pRegKey->GetValue(L"VendorIdentifier");
Console::WriteLine(L"The central processor of this machine is: {0}.", pValue);

RegistryKey * sRegKey = Registry::LocalMachine;
sRegKey = sRegKey->OpenSubKey(L"SOFTWARE\\Autodesk\\AutoCAD\\R18.0\\ACAD-8002:40C");
Object *sValue = sRegKey->GetValue(L"AcadLocation");

if (! sValue)
Console::WriteLine(L"La valeur est ", sValue);
else
Console::WriteLine("Non trouvé");
return 0;
}