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
BufferSizerichtig 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