Computerhilfe (PC-Abteilung) WINDOWS-MSDOS-Expertenfrage

walter4
walter4
Mitglied

WINDOWS-MSDOS-Expertenfrage
geschrieben von walter4
Ich habe ein älteres DOS-Programm gestartet, das bis Windows98 lief, aber wohl einen Interrupt-Hex 21-Befehl enthält, der bei Windows XP nicht mehr toleriert wird. Das Programm meldete einen "unerlaubten Zugriff" und wurde beendet.

Seitdem bekomme ich häufig die Fehlermeldung "Pfad/Datei-Zugriffsfehler", und zwar in diesen Fällen:
1. Wenn ich mit einem MSBasic-programm eine Output-Datei öffne, die noch nicht existiert (o.k. wenn sie existiert)
2. Wenn ich ein ein Basic-Programm kompilieren will
3. Wenn ich mit QB.EXE, dem Basic-Interpreter, ein neues Programm abspeichern will (altes geht)

Ich vermute, daß Windows wegen des unerlaubten Zugriffs irgend etwas gesperrt hat, wahrscheinlich in der Registry.
Mitglied_5ccaf87
Mitglied_5ccaf87
Mitglied

Re: WINDOWS-MSDOS-Expertenfrage
geschrieben von ehemaliges Mitglied
als Antwort auf walter4 vom 27.05.2013, 14:52:25
Vergiss alles was du mal über Interrupts gelesen oder gelernt hast. Sie waren ein Zugriff auf die FAT. Mit WinXP und der endgültigen Einführung von NTFS hat sich dieser Befehl erledigt. Moderne Programmiersprachen kennen ihn nicht mehr. Er lässt sich nicht in eine objektorientierte Programmierung einordnen. Lediglich von C wird er heute noch toleriert, führt aber in den meisten Fällen zu Programm-Fehlern. Dies kannst du feststellen wenn du mal ein altes Programm, welches für win3.1 geschrieben wurde, ausführen willst.

Meines Wissens ist er auch bei VBasic schon rausgeflogen. Hier schreibt der winseln-Support über den Interrupt: http://support.microsoft.com/kb/41446/de

Falls du dich mal mit Delphi 6 (ObjectPascal) beschäftigen willst schreibst du mir eine PN.
walter4
walter4
Mitglied

Re: WINDOWS-MSDOS-Expertenfrage
geschrieben von walter4
als Antwort auf ehemaliges Mitglied vom 27.05.2013, 21:25:53
@HW
Da ich etliche DOS-Programme weiterhin benutzen möchte, brauche ich wohl oder übel diese Interrupts. Hat ja bisher auch immer funktioniert. Die Programme funktionieren auch bei Windows 7 noch. Wahrscheinlich werden die Interrupts intern übersetzt. Der DOS-Kernel wird ja immer kleiner bei jeder neuen Windows-Version.

Ausschließlich der Int 21,16 "Create a file using FCB" macht mir Probleme, er funktioniert offenbar nicht mehr, seit ich ein altes Programm (dummerweise, ohne so einen Effekt zu ahnen) aufgerufen habe. Welcher Interrupt 21H die Misere ausgelöst hat, weiß ich momentan noch nicht; dazu müßte ich das fragliche Programm disassemblieren. Tut aber vermutlich eh nichts zur Sache.

Anscheinend hat Windows daraufhin den Int 21,16 (Create file) gesperrt. Irgendwie muß man den auch wieder entsperren können. Ich habe in der Registry leider nirgends unter Software/Microsoft/... irgend einen Hinweis auf MSDOS gefunden.

Anzeige