Code: Alles auswählen
If OpenWindow(1,0,0,340,200,"",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered) = 0 ; 412
MessageRequester("OpenWindow failed", "")
EndIf
ButtonGadget(0,50,50, 100, 30, "Write File")
ButtonGadget(1,190,50, 100, 30, "Delete File")
auf = 1
Repeat
event = WaitWindowEvent(1)
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case 0
test$ = "Wert"
If CreateFile(0,"C:\test$")
WriteString(0,test$)
CloseFile(0)
auf = 1
EndIf
Case 1
DeleteFile("C:\test$")
auf = 1
EndSelect
EndSelect
If auf = 1
auf = 0
OpenFile(0,"C:\test$")
test$ = ReadString(0)
CloseFile(0)
StringGadget(2,120,125,100,30,test$)
EndIf
Until event = #PB_Event_CloseWindow
Und jetzt der Test:
1. Ich erstelle eine exe und öffne sie dann mit Doppelklick
2. Ich klicke "Write File" und fülle das StringGadget mit dem Inhalt "Test"
2. Ich schließe die exe und öffne sie erneut mit Doppelklick
3. Im StringGadget steht nun erwartungsgemäß "Test"
4. Ich schließe die exe
5. Ich öffne die exe erneut, aber diesmal als Administrator
6. Das StringGadget ist leer
Wenn man die exe als Administrator öffent, wird übrigens die Datei "C:/test$" an ihrem Speicherort voll sichtbar (wieso eigentlich?), während sie vorher noch ausgeblendet war. Und die Datei "C:/test$" kann dann nur noch mit Administratorrechten gelöscht werden, obwohl sie ja ohne Administratorrechte erstellt worden war.
Ist zwar nur ein Testprogramm, aber trotzdem zeigt das ja, wie Windows da einen Strich durch die Rechnung macht. Oder geht das irgendwie zu verhindern? Ich meine, daß der Zugriff auf bereits gespeicherte Dateien immer reibungslos funktioniert, auch wenn man zwischendurch das Programm als Administrator ausführt. Das ist nunmal ein Feature von Windows. Danke für Info.