Registry Eintrag erstellen



  • Wie kann ich einen Registry Eintrag änder/erstellen/lesen/löschen? Ich möchte das mein Programm (Konsolenanwendung) beim Desktop-Rechtsklick einen neuen Kontextmenüeintrag erstellt. Es soll also in "HKEY_CLASSES_ROOT\DesktopBackground\Shell" einen Schlüssel mit dem Namen "TestEintrag" erstellen. Bitte den ganzen Code inklusive

    #include <>
    

    usw. schreiben damit ich es auch alles verstehe. 🙂



  • falsches forum. winapi.
    und so wirst du bestimmt nicht viel erfolg haben (eigener ansatz?!)



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Enitin schrieb:

    Bitte den ganzen Code inklusive

    #include <>
    

    usw. schreiben damit ich nichts verstehen muss. 🙂

    Fixed for you!



  • BYTE pfad[] = "laufwerk\\programmpfad\\name.exe"; 
    HKEY hkey; 
    RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, 0, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, 0);    
    RegSetValueEx(hkey, "schluessel", 0, REG_SZ, pfad, sizeof(pfad)); 
    RegCloseKey(hkey);
    

    Beispiel für einen Registry eintrag für denn Autostart des Programms name.exe



  • Tja... Wie bei meinen ganzen Google-Versuchen. 🙄
    Es funktioniert nicht.

    "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
    

    und

    "schluessel"
    

    werden als Fehler unterstrichen.

    Und Decimad? Ich möchte es so genau damit ich etwas verstehe. Soll ich es mir aus der Luft holen das ich weiß was ich includen muss?



  • Versuche mal _T("asdgasdgsdg") oder L"aöskldgaldskg" stattdessen!



  • Tja, da musst du wohl mal die Referenz lesen. Da du hier im WinAPI-Forum bist wirst du wohl sehr oft die "Windows.h" einbinden müssen. Ansonsten kannst du bei jeder Funktion die Bibliothek und Headerdatei im Abschnitt "Requirements" (bei MSDN) nachlesen. Hier ein Beispiel: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724897(v=vs.85).aspx

    Du solltest dich auch einfach selber schlau machen, wie das alles geht (Google hilft da sehr). Lies dir erstmal etwas durch (siehe z.B. meinen ersten Post) und stell dann konkrete Fragen, wenn du bei etwas nicht weiterkommst.



  • "C++H"? Hast du nicht gelesen was ich geschrieben habe? 😉

    Enitin schrieb:

    Tja... Wie bei meinen ganzen Google-Versuchen. 🙄
    Es funktioniert nicht.

    Ich Google immer erst bevor ich etwas im Forum frage. Das macht auch mehr Sinn finde ich.

    Und "Decimad" es funktioniert leider immer noch nicht... Ihr könnt es doch mal bei euch testen und mir dann den richtigen Code schicken. Das ist doch nicht so schwer oder? Ich meine ich weiß es dann für spätere Programme und ihr müsst nicht immer so lange mit mir schreiben. 😃



  • Welche Fehlermeldung wirft denn Compiler/Linker aus?



  • Ich hab aufm PC gerade noch einen alten Code gefunden (Der sollte mal einem Schulprojekt von mir dienen ... ehm glaub ich jedenfalls ist schon lange her^^):

    Probier damit mal was anzufangen, für Keys löschen anlegen etc. hab ich auch noch Code in dem alten Projekt entdeckt. Aber ich hab jetzt kb das da alles rauszuflücken.^^

    (Nicht über die formatierung etc. wundern ich hab den krempel einfach blind reinkopiert in dem Projekt Code sieht es etwas wild aus. :D) [Hab ihn nie überarbeitet^^]

    #include <windows>
    
    void registery_key_anlegen ( char *srn_nummer )
    {
    HKEY hKey = HKEY_CURRENT_USER;
    LPCTSTR lpSubKey = "software\\backup_programm\\";
    DWORD Reserved = 0;
    LPTSTR lpClass = NULL;
    DWORD dwOptions = REG_OPTION_NON_VOLATILE;
    REGSAM samDesired = KEY_ALL_ACCESS;
    LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL;
    
    PHKEY phkResult= &hKey;
    RegCreateKeyEx(  // key anlegen
                      hKey,
                      lpSubKey,
    
                      Reserved,
                      lpClass,
    
                      dwOptions,
                      samDesired,
    
                      lpSecurityAttributes,
    
                      phkResult,
                      NULL
                    );
    
    LPCTSTR lpValueName ="Key";
    DWORD dwType = REG_SZ;
    
    DWORD cbData = 20;
    
    RegSetValueEx( // key anlegen und wert reinschreiben
    
           hKey,	// handle of key to set value for
           lpValueName,	// address of value to set
    
           Reserved,	// reserved
           dwType,	// flag for value type
    
           srn_nummer ,	// die daten welche im schlüssel gespeichert werden
           cbData 	// size of value data
       );
    RegCloseKey(hKey);
    }
    
    int main(int argc, char* argv[])
    {
    
    registery_key_anlegen("abc");
    
            return 0;
    }
    

    Hab ihn sogar extra nochmal getestet und er funktioniert.


Log in to reply