![]() |
Anzeige:
|
|
|||||||
| Anregungen & Bugreports Für Vorschläge an den Autor Roland und neue XProfan-Versionen |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Ich glaube, das hier ist evtl. das gleiche Problem...
Wenn ich ab Vista eine EXE im Ordner Program Files (Rechte und Umleitung des Ordners beachten) öffne (kein Manifest), erzeugt folgender Quelltext Code:
Declare File$, F#
File$ = LoadFile$("Datei laden", "*.*")
'Set("FileMode",0)
IF File$ <> ""
Assign #2, File$
OpenRw #2
DIM f#, FileSize(File$)
Assign #1, File$
OpenRw #1
Print FileSize(File$)
BlockRead(File$, f#, 0, FileSize(File$))
$B "Test"
Print Char$(f#, 0, SizeOf(f#))
$B "Test 2"
CloseRw #1
CloseRw #2
dispose f#
endif
Wie kommt das? OpenRW schlägt hier fehl, da zum Öffnen (Read / Write) einer EXE im Ordner Program Files Adminrechte erforderlich sind - die hat das Programm aber nicht. Normalerweise würde hier in VirtualStore umgeleitet werden - bei bestimmten Dateiendungen findet aber eine solche Umleitung nicht statt (unter anderem EXE und DLL Dateien). Profan merkt sich hier, das OpenRW fehlgeschlagen ist (Errorcode 5 = Zugriff verweigert). BlockRead würde hier problemlos funktionieren, aufgrund des vorangegangenen Fehlers schlägt der Befehl hier aber fehl. Muss das sein?
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
@Roland:
Das Problem ist schon sehr alt. Blätter mal einige Jahre in deinem Forum zurück, da hast du damals dazu angeraten, vor jeder Dateiaktion %IORESULT auszulesen und damit auf 0 zu setzen. Ich persönlich denke, dass man Fehler dort auswerten sollte, wo sie passieren und nicht einen Fehlercode mitschleppen und dann auf die Sachen anwenden sollte, bei denen gar kein Fehler passiert...
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#3 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
@AHT: Hier handelt sich um das ganz normale Verhalten von Pascal-Dateioperationen. Wenn man sich an meinen Rat hält, kann man damit gut umgehen. Gerade nach einem Öffnen einer Datei sollte man immer überprüfen, ob es geklappt hat.
Aber in diesem speziellen Fall spricht natürlich nichts dagegen, dass ich in der BlockRead-Funktion %IOResult sicherheitshalber selbst zurücksetze. In XProfan 12 wird es so sein. Gruß Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c http://www.xprofan.de |
|
|
|
|
|
#4 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Das ganze ist eine böse Falle. Im Prinzip müsste man dann ja wirklich vor jeder Dateioperation
Code:
io%=%IOResult Ein Programm läuft unter Umständen (setzt man nicht zurück) dann auf dem einen Rechner, auf dem nächsten läuft es aber wiederum nicht. Da nicht genau fest steht, welche Profanbefehle überhaupt intern auf %IORESULT reagieren, weiß man auch nicht genau, was man überhaupt zurücksetzen muss und was nicht...
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#5 (Direktlink) | |
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
Zitat:
Die genannten Rechteprobleme zeigen sich in der Regel ja bereits beim Öffnen der Datei. Wenn das schon nicht klappt, sind weitere Schreib- oder Leseoperationen hinfällig. Auch nach dem Schließen der Datei mit Close sollte mit %IOResult überprüft werden, ob es funkionierte. Tatsächlich wird bei den allermeisten Dateioperationen allerdings %IOResult bereits von mir vor Ausführung der Funktion zurückgesetzt. Bei BlockWrite und BlockRead war das bisher nicht der Fall, wird aber in XProfan 12 auch so sein. Gruß Roland Gruß Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c http://www.xprofan.de Geändert von RGH (05.02.2010 um 23:02 Uhr) |
|
|
|
|
|
|
|
#6 (Direktlink) | ||
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Zitat:
Zitat:
Bei welchen genau und bei welchen Befehlen wird das nicht getan? Was reagiert überhaupt genau auf %IORESULT?
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
||
|
|
|
|
|
#7 (Direktlink) | ||
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
Zitat:
Zitat:
Gruß Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c http://www.xprofan.de |
||
|
|
|
|
|
#8 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
Bitte die RTF nicht vergessen, da scheint das gleiche Problem zu sein
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#9 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
@Roland:
GetFilesize schlägt aber nicht fehl, wenn %IORESULT von einer anderen Aktion gesetzt wurde. Problem bei der ganzen Sache %IORESULT dürfte von GetLastError gesetzt werden. Die Adresse des von GetLastError ausgelesenen Errorcodes (LastErrorValue) ist aber ein Member des TEB (das weiß jedes Kleinkind), und der TEB kann problemlos von jeder anderen Anwendung ermittelt und der Inhalt von LastError geändert werden. Reagieren irgendwelche Profanbefehle also blind auf %IORESULT, kann man das Funktionieren einer Anwendung problemlos von außen steuern - das dazu nötige Programmierwissen geht gegen null. Bitte mal sehr genau überdenken, was da evtl. noch zu ändern ist...
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
|
|
#10 (Direktlink) | ||
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
Zitat:
Zitat:
Gruß Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c http://www.xprofan.de |
||
|
|
|
|
|
|
#11 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Hab's gerade getestet, damit liegst du leider falsch
Wie von mir bereits angedeutet lassen sich Profanbefehle durch das Setzen des Fehlercodes ins Nirwana schicken (von einem Fremdprogramm aus). Getestet habe ich das mit BlockRead Edit: Kommando zurück, hatte noch einen Copy / Paste Fehler drin
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT Geändert von AHT (06.02.2010 um 17:39 Uhr) |
|
|
|
|
|
#12 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.776
|
Kleiner Zusatz: Was natürlich möglich ist, ist sich einen Pointer auf die interne IORESULT Variable zu verschaffen und diese von einem fremden Prozess aus direkt zu ändern (gestern getestet). In der Praxis wäre ein Hooking da aber besser und leichter auszuführen. Mir ging es da erst mal um einen Zusammenhang mit dem LastErrorValue, und der besteht zum Glück nicht.
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Direct3D Problem NEUES PROBLEM | Bonser | Treiber-Forum | 3 | 28.11.2007 14:42 |
| Problem mit Game. Grafiktreiber Problem?!?! | Chillers | Hardware - Problemlösungen | 4 | 16.05.2006 16:13 |
| Counter Strike: Server Problem sowie Online Problem | Simon@Xp | Computerspiele | 4 | 10.04.2006 14:30 |
| Bildschirm friert ein - DirectX Problem - ATI-Problem | LudBri | Allgemein | 1 | 01.01.2006 13:02 |
| Problem (Keine Ahnung, welches Problem das ist) | Der_Gast | Hardware - Problemlösungen | 3 | 11.10.2003 18:17 |