Frage

Wer weiß, wie ich kann programmaically eine Registrierung von HKEY_LOCAL_MCAHINE zu HKEY_CURRENT_USER bewegen?

Ich schrieb eine rekursive Funktion, die RegEnumKeyEx und RegEnumValue verwendet, aber es scheint, dass RegEnumValue alle Werte unter der Top-Level-Taste zurück.

Zum Beispiel, wenn der Schlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ MyApp \ KeyName1 und hat 3 Werte darunter, und ich habe HKEY_LOCAL_MACHINE \ SOFTWARE \ MyApp \ Schlüsselname2 und das hat zwei Werte. Es sieht aus wie RegEnumKeyEx ist, die richtigen Tasten zurückkehren, aber wenn ich RegEnumValue zum ersten Key nennen (dh. KeyName1) i erhalten alle 5 Werte zurückgegeben und nicht nur die 3 unter diesem Schlüssel.

Ich hoffe, dass alles Sinn macht ... bin ich etwas falsch zu machen?

Vielen Dank für jede Hilfe

Hier ist ein Ausschnitt, wenn es hilft:

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();
}

d. GetAllDataNames oben ruft einfach RegEnumValue und GetAllSubKeys RegEnumKeyEx nennen.

War es hilfreich?

Lösung

alle Registrierungsfunktionen der Suche durch, fand ich diese: SHCopyKey oder kann ich diese verwenden. RegCopyTree für Vista und später

Danke für die Hilfe.

Andere Tipps

Ich bin kein Experte auf diesem, sondern versuchen, so etwas wie diese.

  RegistryKey myKey = Registry.LocalMachine.OpenSubKey(
  @"SOFTWARE\\" + csStartKey, 
  false);
Registry.CurrentUser.CreateSubKey
        (myKey.ToString());
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top