Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie feststellen, ob eine Datei gelesen werden kann? (https://www.delphipraxis.net/188881-wie-feststellen-ob-eine-datei-gelesen-werden-kann.html)

PeterPanino 16. Apr 2016 11:16

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Welche Art von User sollte keine Leserechte haben?

Fritzew 16. Apr 2016 13:00

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Wenn die Datei in einem anderen Process exklusiv oder zum schreiben geöffnet ist geht das nicht

PeterPanino 16. Apr 2016 14:11

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Zitat:

Zitat von Fritzew (Beitrag 1335752)
Wenn die Datei in einem anderen Process exklusiv oder zum schreiben geöffnet ist geht das nicht

Was geht nicht?

Zacherl 16. Apr 2016 14:20

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Zitat:

Zitat von PeterPanino (Beitrag 1335762)
Zitat:

Zitat von Fritzew (Beitrag 1335752)
Wenn die Datei in einem anderen Process exklusiv oder zum schreiben geöffnet ist geht das nicht

Was geht nicht?

Wenn die Datei nicht mit mindestens FILE_SHARE_READ geöffnet wurde, ist auch nix mit Kopieren, da man zum Kopieren logischerweise Leserechte benötigt. Und ohne besagtes Flag, hat die Anwendung, die momentan das Handle geöffnet hat, eben exklusiven Lesezugriff.

PeterPanino 16. Apr 2016 14:32

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Also bei mir geht das Kopieren wie in Beitrag #6 demonstriert, wenn die Datei in MS Word geöffnet ist. Besser gesagt es läuft. :wink:

Zacherl 16. Apr 2016 15:29

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Zitat:

Zitat von PeterPanino (Beitrag 1335767)
Also bei mir geht das Kopieren wie in Beitrag #6 demonstriert, wenn die Datei in MS Word geöffnet ist. Besser gesagt es läuft. :wink:

Für MS Word mag das ja stimmen, aber den anderen Leuten ging es wohl um eine allgemeingültige Lösung. Word wird das FILE_SHARE_READ Flag verwenden. Für Anwendungen, die das nicht tun, funktioniert deine Funktion aber entsprechend auch nicht.

PeterPanino 16. Apr 2016 15:38

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Natürlich, das ist doch klar. Wenn's gar nicht geht, muss wohl ggf. eine Meldung an den Benutzer ausgegeben werden, dass er das blockierende Programm schließen soll. Aber mit meiner Lösung aus Beitrag #6 ist sichergestellt, dass es in einer höheren Anzahl von Fällen funktioniert als ohne diese Lösung.

jaenicke 16. Apr 2016 17:21

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Du kannst auch die Datei direkt öffnen und dabei FILE_SHARE_WRITE als Flag angeben, z.B. bei einem Filestream. Das sollte genauso oft klappen wie die Kopie.

PeterPanino 16. Apr 2016 18:45

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Da wäre eine Routine recht praktisch, mit der man (direkt, also nicht durch Rückschlüsse) herausfinden kann, mit welchen Flags eine Datei geöffnet ist. Gibt's denn sowas?

p80286 16. Apr 2016 23:15

AW: Wie feststellen, ob eine Datei gelesen werden kann?
 
Zitat:

Zitat von PeterPanino (Beitrag 1335749)
Welche Art von User sollte keine Leserechte haben?

Na der, der diese Rechte nicht hat.
Wenn Du Dir die Eigenschaften einer Datei anschaut (Sicherheit) findest Da wahrscheinlich

Authentifizierte Benutzer
System
Administratoren
Benutzer

Wenn Du, falls Du die entsprechenden Rechte hast, die "Authentifizierte Benutzer" und "Benutzer" löschst, haben normale Benutzer ein echtes Problem diese Datei zu lesen, geschweige denn zu editieren.
Statt zu löschen kannst Du auch Rechte verweigern, was ich allerdings nicht empfehlen kann, da die Rechteverweigerung der schnellste Weg zur Erzeugung von Datei-Zombies ist.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz