2010-02-08 6 views
2

Lors de la tentative de mise à niveau de certains logiciels C++ pour Windows 7, j'ai rencontré des problèmes de création de clés de registre.Création de clés de registre dans Windows 7

Ceci est mon code:

// 
// Create a brand new registry key 
// 
LONG Registry::CreateRegister(std::string path) 
{ 
    HKEY hKey; 
    DWORD dwDisposition; 

    LONG openRes = RegCreateKeyEx(HKEY_CLASSES_ROOT, 
            path.c_str(), 
            0, 
            NULL, 
            REG_OPTION_NON_VOLATILE, 
            KEY_ALL_ACCESS, 
            NULL, 
            &hKey, 
            &dwDisposition);  

    RegCloseKey(hKey); 

    return openRes; 
} 

Sous Windows XP, la fonction RegCreateKeyEx crée avec succès la clé de Registre, retour d'un succès (0) valeur. Dans Windows 7, j'obtiens une valeur de retour de 5 (accès refusé) de la même fonction. J'ai utilisé l'outil regedit pour m'assurer que mon compte dispose des autorisations complètes nécessaires, mais sans succès. Quelqu'un peut-il voir où je pourrais me tromper, ou s'il y a d'autres pièges et problèmes connus que je dois connaître lorsque j'utilise Visual Studio dans Windows 7?

Le logiciel est actuellement écrit dans Visual Studio 2003.

Merci d'avance.

Répondre

3

Depuis Vista, l'accès à certaines zones du registre a été verrouillé. L'utilisateur doit avoir des autorisations "élevées". Essayez d'exécuter votre programme avec "Exécuter en tant qu'administrateur" (clic droit dans l'Explorateur).

+0

Eh oui. Les utilisateurs normaux utilisent 'HKCU \ Software \ Classes'. – MSalters

+4

Ce n'est pas nouveau pour Vista, les utilisateurs «normaux» avec un compte non-administrateur n'ont jamais pu écrire le HKCR. –

+0

@nobugz - quoi de neuf pour Vista/7 est que les comptes utilisateurs avec droits d'administrateur sont également bloqués par défaut, jusqu'à ce qu'ils choisissent explicitement d'élever un processus. –

Questions connexes