C++ Application unter Vista (Registry Zugriff)



  • sri schrieb:

    Kommt denn die UAC-Meldung beim Start?

    Ja.

    Luckie schrieb:

    Was sagt denn GetLastError eigentlich?

    GetLastError() sagt mir das der Vorgang erfolgreich abgeschlossen wurde, was aber nicht sein kann, weil mir die Messagebox, in welcher dies angezeigt wird, gar nicht erst angezeigt werden würde, wenn die Funktion, welche den RegistryKey öffnet, TRUE zurückliefern würde.

    -> Die Funktion, welche einen RegistryKey öffnet, liefert FALSE zurück, daher wird mir eine Messagebox angezeigt, in welcher der Fehlercode als String von GetLastError() ausgegeben wird.



  • Na, dann vermute ich mal stark, dass Du ein Vista x64 hast und Deine Anwendung x86 ist...
    Dann lies mal:
    http://www.codeproject.com/KB/system/Reflection.aspx



  • Jochen Kalmbach schrieb:

    Na, dann vermute ich mal stark, dass Du ein Vista x64 hast und Deine Anwendung x86 ist...
    Dann lies mal:
    http://www.codeproject.com/KB/system/Reflection.aspx

    Also, ich weiß nicht, unter Computer -> Eigenschaften steht aber explizit das es sich um ein 32Bit Betriebssystem handelt 😕



  • Wie lautet denn der Code zum Öffnen des Schlüssels?



  • sri schrieb:

    Wie lautet denn der Code zum Öffnen des Schlüssels?

    if ( RegOpenKeyEx(
            kHKey,							// handle to an open key
            lpSubKey,							// address of subkey name
            0,									// reserved
            KEY_WRITE | KEY_READ,				// desired security access
            &m_HKey								// address of buffer for opened handle
            ) != ERROR_SUCCESS )
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    

    Nichts besonderes ... das ist die Standartregistryfunktion...



  • Und wie heißt der zu öffnende Key?



  • sri schrieb:

    Und wie heißt der zu öffnende Key?

    HKEY_LOCAL_MACHINE\software\company\Application\testkey1
    

    Hast du wohl eine Idee ?



  • Und der Schlüssel existiert auch wirklich? Was passiert, wenn Du anstatt RegOpenKeyEx einmal RegCreateKeyEx verwendest?



  • sri schrieb:

    Und der Schlüssel existiert auch wirklich? Was passiert, wenn Du anstatt RegOpenKeyEx einmal RegCreateKeyEx verwendest?

    Nein er existiert natürlich nicht ... weil, wenn ich den nichtmal öffnen kann, konnte ich ihn vorher auch nicht anlegen 😉
    Da liegt ja mein Problem, das ich gänzlich keinen Zugriff auf die Registry unter HKEY_LOCAL_MACHINE habe.

    Aber danke das du dir da solch einen Kopf drum machst 🙂



  • Wenn er nicht existiert, dann kann RegOpenKeyEx ihn natürlich auch nicht öffnen. Das ist auf allen Systemen so, nicht nur auf Vista und nicht nur bei HKLM. Wenn Du RegOpenKeyEx durch RegCreateKeyEx ersetzt, dann wird der Schlüssel erstellt (falls nicht vorhanden) bzw. geöffnet (falls vorhanden). Durch das beigelegte Manifest klappt dies dann auch mit HKLM.



  • sri schrieb:

    Wenn er nicht existiert, dann kann RegOpenKeyEx ihn natürlich auch nicht öffnen. Das ist auf allen Systemen so, nicht nur auf Vista und nicht nur bei HKLM. Wenn Du RegOpenKeyEx durch RegCreateKeyEx ersetzt, dann wird der Schlüssel erstellt (falls nicht vorhanden) bzw. geöffnet (falls vorhanden). Durch das beigelegte Manifest klappt dies dann auch mit HKLM.

    Danke, aber dessen bin ich mir bewußt.
    Ich habe in einer vorherigen Funktion bereits versucht ihn zu erstellen. Aber da er nicht da ist, weil das erstellen nicht klappte, kann er ihn nich öffnen. Aber mein Problem ist ja das ich prinzipiell keinen Zugriff auf den Key HKLM bekomme.



  • Und welchen Fehlercode gibt die Erstellfunktion zurück?



  • sri schrieb:

    Und welchen Fehlercode gibt die Erstellfunktion zurück?

    Das weiß ich nicht mehr, leider.
    Ich habe das Problem nun anders gelöst.
    Sollte dieses Problem erneut auftreten, werde ich wohl den Installer die Einträge machen lassen und dann aus dem Programm nur noch lesend Zugriff auf die Registry nehmen.

    Aber danke nochmal an alle fleißigen Poster für eure Ideen und Verbesserungen.

    Liebe Grüße,
    inva


Anmelden zum Antworten