Registry Einträge in einer Datei abspeichern



    1. RegOpenKeyEx für den zu speichernden key
    2. RegSaveKey zum Abspecihern, RegLoadKey zum laden
    3. RegCloseKey

    Achtung: für RegSaveKey benötigt der aufrufende Prozeß Backup privileges

    HKEY hkey;
    DWORD err = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\MyCompany\\MyApp", KEY_READ, &hkey);
    err = RegSaveKey(hkey, "c:\\temp\\registrytest.reg", NULL);
    RegCloseKey(hkey);
    


  • Hallo Peterchen,

    vielen Dank erstmal für Deine Hilfe, ich habe meinen Code nun Deinem angepasst und erhalte dann zwar die Datei, die ich benötige, aber leider auch ohne Inhalt.

    Hier noch mal der Code:

    void CMFCDlgTestDlg::OnButtonImport() 
    {
    HKEY hkey; 
    
    DWORD err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion",0, KEY_READ, &hkey); 
    err = RegSaveKey(hkey, "c:\\registrytest.reg", NULL); 
    RegCloseKey(hkey); 
    }
    

    Falls ich irgendwie etwas falsch gemacht haben sollte.

    Danke für Deine Hilfe!



  • sieht auf den ersten blick gut aus - was sind denn die beiden err's die zurückkommen?



  • Das sind Fehlermeldungscodes.
    ERROR_SUCCESS bedeutet kein Fehler.
    Mit FormatMessage erhälst du mehr Informationen über die Fehler.

    Grüße Rapha



  • Hallo zusammen,

    wo müsste er mir die beiden errs denn ausgeben?



  • Eigentlich wollt ich nur wissen, was drin steht 🤡

    beide sollten 0 sein. guck sie dir halt mal mit dem Debugger an, oder mach ein ASSERT oder Trace.

    [edit]Mann, Ich brauch Urlaub![/edit]



  • Hallo,

    folgende Fehlermeldung erhalte ich im Debug Fenster

    Warning: no listbox item selected.
    Thread 0x120 wurde mit Code 0 (0x0) beendet.
    Das Programm "C:\Dokumente und Einstellungen\Marc\Desktop\MFCDlgTest\Debug\MFCDlgTest.exe" wurde mit  Code 0 (0x0) beendet.
    

    Hoffe das hilft Dir/Mir weiter...



  • nicht wirklich 😉

    füg mal zwei Traces ein:

    DWORD err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion",0, KEY_READ, &hkey); 
    TRACE("RegOpenKeyEx: err=%Xh\n", err);
    err = RegSaveKey(hkey, "c:\\registrytest.reg", NULL); 
    TRACE("RegSaveKey: err=%Xh\n", err);
    RegCloseKey(hkey);
    


  • Das habe ich dann im Debug Modus herausgefunden:

    Warning: no listbox item selected.
    RegOpenKeyEx: err=0h
    RegSaveKey: err=522h
    Thread 0xA8C wurde mit Code 0 (0x0) beendet.
    Das Programm "C:\Dokumente und Einstellungen\Marc\Desktop\MFCDlgTest\Debug\MFCDlgTest.exe" wurde mit  Code 0 (0x0) beendet.
    


  • Fehlt höchstwahrscheinlich das BVackup Privilege für de angemeldeten User (522h - Der Client besitzt ein erforderliches Recht nicht.)

    Sollte aber als Admin gehen...



  • Das ist aber merkwürdig, da ich an meinem PC mit lokalen Administratorrechten angemeldet bin. ALles sehr merkwürdig, wie ich finde...



  • Hallo C++ Gemeinde,

    kann mir vielleicht jemand bei meinem Problem weiterhelfen, da ich hier an diesem Punkt einfach nicht weiterkomme. Vielen Dank für Eure Super Unterstützung.



  • Hallo zusammen,

    kann mir denn wirklich keiner bei meinem Problem weiterhelfen???

    Das Problem besteht darin, das er zwar nun mit dem neuen C++ Code die Datei anlegt, aber leider auch ohne Inhalt. Administratorrechte sind vorhanden.

    Danke für Eure Hilfe



  • Hallo,

    da ich nun in einigen Beiträgen gelesen habe, das man auch als Administrator unter Windows NT, 2000 und XP noch spezielle Rechte benötigt, wollte ich Euch fragen, da ich den Code aus den anderen Beiträgen nicht vertshe, ob sich jemand bereit erklären würde und mir das in den vorhandenen Code integrieren könnte. Danke schon mal vorab für Eure Hilfe!

    void CMFCDlgTestDlg::OnButtonImport()
    
    {
    HKEY hkey; 
    
    DWORD err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion",0, KEY_ALL_ACCESS, &hkey);
    err = RegSaveKey(hkey, "c:\\registrytest.reg", NULL); 
    
    RegCloseKey(hkey); 
    }
    


  • versuch mal die msdn zu lesen - was ich so rauslese ist, das du anscheinend nicht mal weisst was,und wozu die gut ist !

    du weisst nicht mal was fehlercodes sind.....schwach



  • @fdk

    Ich finde es erbärmlich, wie Du Dich hier gegenüber einem Neueinsteiger von C++ verhälst. Das ist einfach unterstes Niveau und habe ich in dieser Form noch in keinem Forum erleben dürfen. Ich nehme auch mal an, das Du normalerweise einen registrierten Benutzernamen hast und Dich nicht traust Dich zu outen...

    Mein Problem ist nicht, das ich nicht lesen kann, sondern das ich den in anderen Beiträgen gefundenen Code zum Thema Backup Privilege nicht verstehe und daher hier um Hilfe gebeten habe, damit ich das verstehe.

    Vielleicht wäre nun jemand so nett und könnte mir bei meiner Problemlösung weiterhelfen und nicht so geistreich antworten wie fdk.

    Ich wünsche allen anderen einen schönen Abend und vielen Dank für die sonstige Unterstützung, die ich hier schon erleben durfte.



  • Hallo zusammen,

    ist hier vielleicht jemand in der Lage, mir bei meinem Problem weiter zu helfen?
    Ich habe immer noch das Problem, das mir ein bestimmtes Backup Privilege fehlt, obwohl ich Administratorrechte besitze.

    Danke für Eure Hilfe...

    Hier nochmal mein bsiheriger Code:

    void CMFCDlgTestDlg::OnButtonImport()
    
    {
    HKEY hkey; 
    
    DWORD err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion",0, KEY_ALL_ACCESS, &hkey);
    err = RegSaveKey(hkey, "c:\\registrytest.reg", NULL); 
    
    RegCloseKey(hkey); 
    }
    


  • SE_BACKUP_NAME ?



  • Hallo,

    das Setzen der entsprechenden Rechte wird exemplarisch in einem KB-Artikel gezeigt:

    http://support.microsoft.com/?kbid=128731

    MfG



  • Vielen Dank @Probe-Nutzer:

    Habe den Code nun mal so in ein neues MFC Projekt eingefügt und erhalte dann eine Fehlermeldung mit dem Hinweis: error C2447: Funktionskopf fehlt - Parameterliste im alten Stil?

    Kannst Du mir da eine Antwort drauf geben?

    Danke!


Anmelden zum Antworten