Salut à tous ! Je tombe sur un problème "bloquant" pour utiliser la fonction RegistreExiste depuis les denières mises à jours de Windows 10 et sur Windows 11. Les versions de WD24 à 26 n'arrivent plus à utiliser cette fonction correctement, et retournent toujours un "Faux" lors du test de la clef, même si cette dernière existe. Je passe le code ci-dessous, il n'y a rien d'exceptionnel, je souhaite vérifier la présence de 2 runtime VisualStudio 10 en 32 et 64 bits. Si quelqu'un à une idée pour le faire fonctionner, je suis preneur (inutil de me dire de passer en WD27, ça bugge après la 83m. (Mais pour d'autres raisons), Merci PROCÉDURE PRO_CheckOSVS() sOSMode est une chaîne ANSI = SysVersionWindows(sysProcesseur) bKeyHasBeenRead est un booléen = Faux sResult est une chaîne ANSI = "" b32BitIsInstalled est un booléen = Faux b64BitIsInstalled est un booléen = Faux s32BitVersionBld est une chaîne ANSI = "" s64BitVersionBld est une chaîne ANSI = "" nStatus32BitToReturn est un entier = 0 nStatus64BitToReturn est un entier = 0 SELON sOSMode CAS "32" SI RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86") = Vrai ALORS b32BitIsInstalled = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86","Installed",bKeyHasBeenRead) SI bKeyHasBeenRead = Vrai ALORS bKeyHasBeenRead = Faux SI b32BitIsInstalled = Vrai ALORS s32BitVersionBld = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x86","Bld",bKeyHasBeenRead) SI bKeyHasBeenRead = Vrai ALORS SI s32BitVersionBld = "40219" ALORS nStatus32BitToReturn = 11 // 1 + 1 = 32Bit + Installed RENVOYER nStatus32BitToReturn FIN FIN FIN FIN FIN nStatus32BitToReturn = 10 // 1 + 0 = 32Bit + Not Installed RENVOYER nStatus32BitToReturn CAS "64" bKeyHasBeenRead = Faux nStatus32BitToReturn = 20 // 2 + 0 = 32Bit + Not Installed on x64 SI RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86") = Vrai ALORS b32BitIsInstalled = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86","Installed",bKeyHasBeenRead) SI bKeyHasBeenRead = Vrai ALORS bKeyHasBeenRead = Faux SI b32BitIsInstalled = Vrai ALORS s32BitVersionBld = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86","Bld",bKeyHasBeenRead) SI bKeyHasBeenRead = Vrai ALORS nStatus32BitToReturn = 21 // 2 + 1 = 32Bit + Installed on x64 FIN FIN FIN FIN nStatus64BitToReturn = 30 // 3 + 0 = 64Bit + Not Installed on x64 SI RegistreExiste("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64") = Vrai ALORS b64BitIsInstalled = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64","Installed",bKeyHasBeenRead) SI bKeyHasBeenRead = Vrai ALORS SI b64BitIsInstalled = Vrai ALORS s64BitVersionBld = RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64","Bld",bKeyHasBeenRead) SI bKeyHasBeenRead = Vrai ALORS nStatus64BitToReturn = 31 // 3 + 1 = 64Bit + Not Installed on x64 FIN FIN FIN FIN SELON Vrai CAS nStatus32BitToReturn = 20 ET nStatus64BitToReturn = 30 : // 32Bit + 64Bit Not Installed on x64 RENVOYER 500 CAS nStatus32BitToReturn = 21 ET nStatus64BitToReturn = 30 : // 32Bit Installed on x64 + 64Bit Not Installed on x64 RENVOYER 510 CAS nStatus32BitToReturn = 20 ET nStatus64BitToReturn = 31 : // 32Bit Not Installed on x64 + 64Bit Installed on x64 RENVOYER 501 CAS nStatus32BitToReturn = 21 ET nStatus64BitToReturn = 31 : // 32Bit Installed on x64 + 64Bit Installed on x64 RENVOYER 511 AUTRE CAS FIN AUTRE CAS RENVOYER 99 FIN
Bonjour, Cela ne viendrait-il pas "tout simplement" d'un droit d'accès à la BDR ? Sur la machine concernées, en mode console, essayes cela : Code (Text): REG QUERY HKLM\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64 /v Installed Code (Text): REG QUERY HKLM\WOW6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x86 /v Installed En ce qui concerne le mode 32bit, il manque la partie WOW6432Node dans ton chemin. A ce sujet, il serait souhaitable de baliser et d'indenter ta partie code ([_Code=windev] et [_/Code] il faut supprimer les "_") pour la rendre plus lisible
Bonjour DandyPunk, merci pour tes suggestions. A priori, pour la partie 32 bits, il me semble que l'OS ne génère pas de WOW6432, ce serait illogique, car il n'y pas de 64 bit sur une machine 32 bits... J'ai formatté un PC, et testé dessus, les problèmes que je rencontrais ont disparu, j'ai pu générer mon composant en WD27, et WD28... Il ne me reste plus qu'à réinstaller mes 2 laptops depuis zéro... (Pas content le garçon, au vu du boulot que ça représente...) A+...