Question

Quelqu'un sait-il comment je peux, par programme, déplacer un registre de HKEY_LOCAL_MCAHINE vers HKEY_CURRENT_USER?

J'ai écrit une fonction récursive qui utilise RegEnumKeyEx et RegEnumValue, mais il semble que RegEnumValue renvoie toutes les valeurs sous la clé de niveau supérieur.

Par exemple, si la clé est HKEY_LOCAL_MACHINE \ SOFTWARE \ MyApp \ KeyName1 et si elle a 3 valeurs et si j'ai 2 valeurs. Il semble que RegEnumKeyEx renvoie les clés appropriées, mais lorsque j'appelle RegEnumValue pour la première clé (c'est-à-dire KeyName1), toutes les 5 valeurs sont renvoyées, et pas uniquement les 3 situées sous cette clé.

J'espère que tout est logique ... est-ce que je fais quelque chose de mal?

Merci pour toute aide

Voici un extrait de code, si cela vous aide:

void CArgusApp::RecurseSubKeys(CString csStartKey)
{
    CQERegistry reg;

    HRESULT hr = reg.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\" + csStartKey, KEY_QUERY_VALUE );

    CStringArray csaDataNames;
    reg.GetAllDataNames(csaDataNames);
    for (int j = 0; j < csaDataNames.GetSize(); j++)
    {
        CString csValueName = csaDataNames.ElementAt(j);
        TRACE(csStartKey + " - " + csValueName);
    }

    CStringArray csaKeys;
    reg.GetAllSubKeys(csaKeys);
    for (int i = 0; i < csaKeys.GetSize(); i++)
    {
        CString csKey = csaKeys.ElementAt(i);
        this->RecurseSubKeys(csStartKey + "\\" + csKey);
    }

    reg.Close();
}

i.e. GetAllDataNames ci-dessus appelle simplement RegEnumValue et GetAllSubKeys appelle RegEnumKeyEx.

Était-ce utile?

La solution

En parcourant toutes les fonctions du registre, j'ai trouvé ceci: SHCopyKey ou je peux l'utiliser: RegCopyTree pour Vista et versions ultérieures.

Merci pour l'aide.

Autres conseils

Je ne suis pas un expert en la matière, mais essayez quelque chose comme ça.

  RegistryKey myKey = Registry.LocalMachine.OpenSubKey(
  @"SOFTWARE\\" + csStartKey, 
  false);
Registry.CurrentUser.CreateSubKey
        (myKey.ToString());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top