Dans Microsoft Visual C++, j'ai le code suivant pour accéder à un chemin dans le registre. Ensuite, j'ai lu une valeur de la clé Installed
avec RegQueryValueEx
. Jusqu'ici tout va bien, la valeur semble être 1
, ce qui correspond à la présence de Visual C++ 2010 runtime sur mon système. (Il se trouve être un morceau de code pour détecter la présence de l'exécution C++).Pourquoi RegOpenKeyEx permet-il d'ouvrir une clé qui n'existe pas dans l'Éditeur du Registre?
Maintenant, quand je vérifie avec regedit.exe
à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0
je ne vois pas VC
dans l'arbre.
Comment est-ce possible? J'ai copié/collé tous les chemins et le code dans cette question, ils doivent donc être corrects.
code en C++ application:
HKEY RegistryKey;
DWORD ErrorCode;
DWORD RegDwordValue = 0;
DWORD RegDwordValueSize = sizeof(DWORD);
if((ErrorCode = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\VisualStudio\\10.0\\VC\\VCRedist\\x86",
0, //Reserved
KEY_READ,
&RegistryKey)) != ERROR_SUCCESS)
{
//Either the key does not exists, or registry access is denied. Anyway, detection did not succeed
std::cout << "Could not read registry path:\n\t" << lpcRegistryPath << "\n\tError code: " << ErrorCode;
return false;
}
if((ErrorCode = RegQueryValueEx( RegistryKey,
lpcValueToQuery,
NULL,
NULL,
(LPBYTE)&RegDwordValue,
&RegDwordValueSize
)) != ERROR_SUCCESS)
{
std::cout << "Could not read registry value, error " << ErrorCode;
return false;
}
EDIT: J'ai ajouté une exportation du Registre ci-dessous
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Debugger]
"FEQARuntimeImplDll"="C:\\Program Files\\Microsoft Visual Studio 10.0\\Common7\\Packages\\Debugger\\X64\\Microsoft.VisualStudio.Debugger.Runtime.Impl.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages\{4A0C6509-BF90-43DA-ABEE-0ABA3A8527F1}]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages\{4A0C6509-BF90-43DA-ABEE-0ABA3A8527F1}\Settings]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages\{4A0C6509-BF90-43DA-ABEE-0ABA3A8527F1}\Settings\Tools]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Packages\{4A0C6509-BF90-43DA-ABEE-0ABA3A8527F1}\Settings\Tools\SSISScript]
"ScriptLanguage"="CSharp"
Voir le lien dans cette vieille réponse de [la mienne] (http://stackoverflow.com/questions/14585286/c-regcreatekeyex-success-but-without-result/14585359#14585359) – hmjd