Zugriffsverletzung bei Adresse: [...]
-
Ich habs bei mir soeben getestet.
Nach dem Ladeschirm erscheint mir ebenfalls die Meldung:
Vor Registrierung:
- Zugriffsverletzung bei Adresse 00524C6A in Modul 'SuperMediaPlayerPro.exe'. Lesen von Adresse 00000001
Nach der Ausführung von Beta Registrieren.bat
- Zugriffsverletzung bei Adresse 00524EE4 in Modul 'SuperMediaPlayerPro.exe'. Leden von Adresse 01967FD0Bei der Lizenzierung taucht ebenfalls ein Fehler auf:
- Zugriffsverletzung bei Adresse D5AABED6. Lesen von Adresse D5AABED6Hier noch kurze Informationen zu meinem System:
- Windows XP SP 3
- C++Builder 2010 installiert
- Visual Studio 2008 installiert
-
vielen Dank !
Ich habe SP 3
Windows XP Professional
BCB 2009
Visual Studio 2008 ExpressIch werde die Fehler so gut es geht auswerten und terminieren
-
Der Fehler vor der Registrierung kann nur an den Zugriff auf die registry sein, auf einen Wert den es ja noch nicht gibt.
Und es scheint so als käme immer noch ein Fehler bei einem Registry Zugriff, selbst wenn der Wert besteht, wie könnte ich folgenden Codeschnipsel ?
(Langsam wirds Handfester)
char temp[99] = {""}; unsigned long size = sizeof(temp); HKEY hKey; RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\MSP", &hKey); int suc = RegQueryValueEx(hKey, "LICENSE", NULL, NULL, temp, &size); if (suc == 2) { license = 0; valid = 0; } if (suc == 0) { valid = 2; key = ""; int i = 0; for (;i < 98; i++) { key += temp[i]; } RegCloseKey(hKey);
(formatierung noch im alten Stil, da es sich hier um ein Monatsprojekt handelt und der Teil zu den alten gehört)
EDIT: Lade mir grade die Borland Runtime Data Base für Inno Setup runter, das könnte mögliche Fehler beheben, wenn sie mitinstalliert wird.
EDIT 2: Die zweite Fehlermeldung kenn ich schon nur das "Lesen von Adresse" ist anders, aber das liegt wohl am unterschiedlich Computer. (CPU abschnitt)
Ok das ist in der Tat GUTfragt sich nur was der heißt
-
Tim06TR schrieb:
EDIT: Lade mir grade die Borland Runtime Data Base für Inno Setup runter, das könnte mögliche Fehler beheben, wenn sie mitinstalliert wird.
Mach lieber das Häkchen bei Projektoptionen/Linker/Dynamische RTL verwenden weg. Läuft dann überall ohne Extrawürste installieren zu müssen.
-
Bei WinAPI-Funktionen (wie z.B. RegOpenKey) mußt du immer den Rückgabewert prüfen!
Warum verwendest du nicht die VCL-Klasse 'TRegistry'?. Dann würdest du wenigstens Exceptions kriegen anstatt Speicherzugriffsfehler.
-
In HKEY_LOCAL_MACHINE dürfen nur "admin" Accounts schreiben evtl. liegt es ja daran.
-
VCL-Klasse 'TRegistry'
Klasse sowas hilft mir weiter !
In HKEY_LOCAL_MACHINE dürfen nur "admin" Accounts schreiben
Nein das ist überall der Fall !
Eins ist mir noch aufgefallen, wenn ich die vcl120.bpl und die drei anderen in meinen Programmordner kompiere bekomme ich auch Acces Violation Fehler
.
Das Oberste verleitet mich jetzt auch dazu weiteres in VCL umzuschreiben, ich benutze dich so gern Standart Elemente oder Winapi :), ja das mach ich.
Ich danke herzlich für die Ideen, den mir liegt sehr viel an diesem Projekt, und ich hab es anscheinend nicht oft genug getestet
EDIT:
Projektoptionen/Linker/Dynamische RTL
Das wars was mir immer gefehlt hat ! Ich hab mich schon gewundert warum das nie gefunzt hat. Ich kannte es zwar, dass man was machen muss, damits überall läuft, aber das hab ich wohl vergessen
-
Folgender Code erreciht den Fehler "Subkey nicht gefunden" (mein fehler
)
{ int suc = 2; std::string IFO; TRegistry* reg = new TRegistry(KEY_READ); reg->RootKey = HKEY_LOCAL_MACHINE; if(!reg->KeyExists("Software\\MSP")) { MessageBox(NULL,"Key not found!","CRITICAL ERROR",MB_OK); } reg->Access = KEY_WRITE; bool openResult = reg->OpenKey("Software\\MSP\\", false); if (!openResult) { MessageBox(NULL,"\"MSP\" not found!","CRITICAL ERROR",MB_OK); license = 0; valid = 0; } else { if (reg->LoadKey("Software\\MSP","LICENSE")) { suc = 0; reg->ReadString(IFO.c_str()); } else { MessageBox(NULL,"Subkey not found","CRITICAL ERROR",MB_OK); license = 0; valid = 0; } // MessageBox(NULL,IFO.c_str(),"CRITICAL ERROR",MB_OK); }
Was mach den hier falsch, die Borland Hilfe gibt leider keine angaben zum Lesen nur zum Schreiben
-
bool __fastcall LoadKey(System::UnicodeString Key, System::UnicodeString FileName);
Creates a subkey under the root key and loads registry information from a file into the newly created subkey.
Da wird also geschrieben, nicht gelesen. Und weil a) software\MSP offenbar schon existiert und/oder b) der Dateiname ungültig ist, schlägt LoadKey fehl.
Zum Lesen dürfte eine der diversen Read...-Funktionen wohl besser geeignet sein.
-
Jansen schrieb:
bool __fastcall LoadKey(System::UnicodeString Key, System::UnicodeString FileName);
Creates a subkey under the root key and loads registry information from a file into the newly created subkey.
Da wird also geschrieben, nicht gelesen. Und weil a) software\MSP offenbar schon existiert und/oder b) der Dateiname ungültig ist, schlägt LoadKey fehl.
Zum Lesen dürfte eine der diversen Read...-Funktionen wohl besser geeignet sein.
hmm ok leuchtet ein
Habs korigiert und es geht
Ganz nebenbei ist das ganze Thema gelöst weil:
Mach lieber das Häkchen bei Projektoptionen/Linker/Dynamische RTL verwenden weg. Läuft dann überall ohne Extrawürste installieren zu müssen.
Das hat alle Probleme weggefegt. Nanyuki Ich danke !