PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenausführungsverhinderung WinXP + 2003 Server + Delphi Programm



Torsten Boettcher
26.06.2007, 16:50
Hi @ all.

Ich habe es irgendwie geschafft mein Programm so zu schreiben das die Datenausführungsverhinderung von Windows 2003 Server greift.

Kann mir einer sagen wo ich Informationen finde worauf dieses Teil reagiert?

Ich habe schon die Detailierte Beschreibung der Funktion bei Microsoft gefunden. Da steht aber nicht worauf das Teil reagiert.

Ferner würde mich interessieren wie ich einen Ausnahmeeintrag manuell über die Konsole machen kann?

Witzig ist folgendes!
Unter Windows XP läuft mein Programm unter Windows 2003 Server nicht.
Beide Computer stehen auf "Datenausführung für alle Programme ..."

Meine Win XP CPU hat keine Hardware für die Datenausführung.
Die beiden Win2003 Server haben diese Hardware.
Funktioniert die Softwareemulation der Datenausführungsverhinderung in Windows XP nicht ordentlich?

Wenn ich mein Programm als Ausnahme in Win2003 eintrage kann ich es starten.

Danke für Eure Hilfe.

Bernhard Geyer
26.06.2007, 17:44
Und was machst du besonderes das diese Datenausführung überhaupt zuschlägt? Wie wäre es diese Implementierungsunschönheit zu beseitigen.


Meine Win XP CPU hat keine Hardware für die Datenausführung.
Das wird das Problem sein. Ohne HW-Unterstützung kann Windows dies nicht performant anbieten.

Torsten Boettcher
27.06.2007, 08:47
Hi Bernahrd

>>Und was machst du besonderes das diese Datenausführung überhaupt zuschlägt?<<

Das wüsste ich auch gerne.
Ich habe nur 9 Sprachen mit dem Multilizer eingebaut.

Daran kann es aber nicht liegen. Auch die anderen Programme von mir benutzen den Multilizer mit 9 Sprachen. Bisher gab es da keine Probleme.

Deshalb will ich ja wissen worauf die Datenausführungverhinderung ja reagiert.
Die vorherige Version meines Programms läuft ja ohne Probleme.
Und die anderen Programme funktionieren mit dem Multilizer und 9 Sprachen problemlos.

Ich möchte den Fehler ja ausbauen aber ich weiss nicht wo ich ansetzen muss.
Wie kann ich also die Stelle in meinem Programm finden die das Starten verhindert auslöst?

Gibt es irgendwo ein Logfile der Datenausführungsverhinderung das ich kontrollieren kann?

danke

Bernhard Geyer
27.06.2007, 09:07
Diese Datenausführung schlägt zu wenn:

- Dein Programm versucht eigentlich als Datensegmente definierte Pages auszuführen
- Du versuchst Programmsegmente im Laufenden Betrieb zu verändern ohne die passenden WinAPI-Aufrufe zu tätigen.

Oft sind 3th-Party Kompos schuld welche Programmsegmente "patchen" um eigene Features unterzubringen, aber nicht korrekt programmiert sind.

Torsten Boettcher
27.06.2007, 13:06
Hi Bernhard.

Danke für die Tipps. Ich habe es gerade gefunden woran es lag.

Also noch mal von vorne:
1. Programm startet nicht unter Win2003. Keine Fehlermeldung oder ähnliches.
2. Programm unter Win2003Server in der Datenverhinderung als Ausnahme eingetragen und das Programm läuft.
3. Programm läuft ganz normal unter XP.
4. CPU von Win2003 haben DEP. Die von XP nicht!

Lösung:
Ich habe in den Compilereinstellungen von Delphi "Pentium_save FDIV" angehakt. Damit läuft mein Programm unter Win2003 und XP ohne eine ausnahme definieren zu müssen.
Kompiliere ich ohne Pentium_save FDIV kann ich den Fehler sofort reproduzieren.

Ferner kann man auch eine mit ASPack erzeugte komprimierte Exe nehmen. Damit ging es auch.


Was es nicht alles gibt ...