Zugriff auf Registry funktioniert unter WinXP Home Edition aber nicht unter Professionell



  • Hallo,
    ich hatte letztens eine unangenehme Überraschung mit einem meiner Programme.
    Das Programm las einen Registry-Key ("HKEY_CURRENT_USER\SOFTWARE\Blizzard Entertainment\Warcraft III\Gateways") aus und schrieb schließlich einen neuen Wert wieder hinein. Das ganze funktionierte perfekt unter Windows XP Home Edition. Aber leider nicht unter der Professionell. Er kann nicht mal den Key lesen. Was mich wundert, den ich habs bei mehreren PCs probiert und war auch der Administrator. Dann müsste es doch mit den Rechten keine Probleme geben oder?

    Hier der Code:

    HKEY hKey;
    HKEY KEY = HKEY_CURRENT_USER;
    CString KeyPath="Software\\Blizzard Entertainment\\Warcraft III";
    
    RegOpenKeyEx(KEY,(LPCTSTR)KeyPath,0, KEY_ALL_ACCESS,&hKey);
    
    //Gateways abfragen
    if(RegQueryValueEx(hKey,"Battle.net Gateways",NULL,&Type,BuffGateways,&BufferSize)!=ERROR_SUCCESS)
    {
    		TRACE0("WriteWC3Gateway: Einlesen von Battle.net Gateways aus der Registry fehlgeschlagen!\n");
    		return -1; //ja, hier land ich immer
    }
    


  • Über prüfe einmal ob

    Type
    BuffGateways
    BufferSize

    richtig initialisiert sind.



  • BYTE BuffGateways[512];
    DWORD Type;
    DWORD BufferSize=512;
    

    müsste aber ja auch stimmen, denn schließlich gehts ja unter XP Home Edition



  • Schon mal den Rückgabewert von RegOpenKeyEx(..) überprüft?

    Ein weiterer Tipp: Sollten diese Funktionen nicht ERROR_SUCCESS liefern kann Lässt sich mit FormatMessage(..) der Grund feststellen.

    Und, XP pro ist bei Registry Zugriffen schärfer, als XP Home. Überprüfe mal die Zugriffsberechtigung Deiner Windows-Anmeldung.



  • Soggia schrieb:

    Und, XP pro ist bei Registry Zugriffen schärfer, als XP Home. Überprüfe mal die Zugriffsberechtigung Deiner Windows-Anmeldung.

    Ja, das hab ich mir auch gedacht. Aber der Administrator müsste doch alles machen dürfen, oder? (wie root unter Unix, ich kenn mich halt mit Benutzerrechten unter Unix besser aus 😃 )



  • hmm,
    also ich hab winxp prof und ich hab keine probleme mit der registry
    allerdings öffne ich meine reg. nicht mit
    RegOpenKeyEx sondern mit
    RegOpenKey
    da muss man keine zugriffsrechte vergeben.
    darüber bin ich auch schon gestollpert.

    [EDIT]
    ansonsten hab ich nichts sehn können was falsch ist der code sollte eigendlich funzen.

    [NEXT EDIT] du kannst rausfinden ob du alle rechte für die registry hast indem du auf das Taskleistenmenu Start/Ausführen gehst und "regedit" eingibts. Darauf öffnet sich der Registry-Editor von Windows. versuch jetzt einfach mal über die rechte maustaste dir dort neue schlüßel (Ordner / Wert) zu erstellen. wenn du das dort kannst dann muss es auch dein Programm können. mfg LowFly
    mfg
    LowFly


Anmelden zum Antworten