Hi,
ich nutze mein Programm um auf eine Datei auf einem Netzlaufwerk zuzugreifen und diese wird dann mit fmsharexclusive geöffnet und erst bei Schliessen des Programmes wieder freigegeben. Funktioniert soweit tadellos. Mein Problem ist das natürlich beim Versuch eines anderen mit dem selben Programm auf einem anderen Rechner auf die gleiche Datei zuzugreifen nicht so ein schöne Meldung kommt wie die Datei ist derzeit in Nutzung von.... kommt, sondern eine sehr unschöne Fehlermeldung mit Abort etc (auch wenn ich einfach noch eine Programminstanz öffnen will).
Im Netz hatte ich eine Funktion über die Unit Windows gefunden (ob ein File schon genutzt wird) , die aber zu verschiedenen anderen Fehlern die es bis dahin nicht gab geführt hat (insb. bei Rect etc.) so das ich sie lieber wieder entfernt habe.
Wie kann ich ohne diese Unit feststellen ob eine Datei gesperrt ist und wenn ja von wem (Thema GetUserName Windows bzw. Unit Users aber halt von dem der sie im Netzwerk sperrt..). Hab das Gefühl das übersteigt gerade mein Wissen doch etwas sehr..
[gelöst]Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
[gelöst]Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
Zuletzt geändert von Ieyasu am Fr 7. Feb 2020, 20:05, insgesamt 1-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
Du könntest z.B. beim Öffnen der Datei eine Datei (lock.ini oder so) anlegen, in welcher der Benutzer der Datei hinterlegt ist. Beim Schließen der Datei wirfst du die lock.ini wieder weg. So kannst du die Lock-Datei auslesen und sinnvolle Info anzeigen, wenn ein Lockdatei vorhanden ist - ansonsten legst du sie an und öffnest das eigentliche File. Das ganze ist dann auch unabhängig vom BS.
Du könntest so auch weitere Informationen bereitstellen, z.B. seit wann die Datei in Verwendung ist ...
Du könntest so auch weitere Informationen bereitstellen, z.B. seit wann die Datei in Verwendung ist ...
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
- af0815
- Lazarusforum e. V.
- Beiträge: 6773
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
Grundlegend ist das Feststellen einer Sperrung in einem Netzwerkshare nicht besonders einfach zu machen. Du kannst nur versuchen ein Handle darauf zu bekommen, wenn nicht, dann halt die geworfene Exception abfangen.Ieyasu hat geschrieben:Wie kann ich ohne diese Unit feststellen ob eine Datei gesperrt ist und wenn ja von wem (Thema GetUserName Windows bzw. Unit Users aber halt von dem der sie im Netzwerk sperrt..). Hab das Gefühl das übersteigt gerade mein Wissen doch etwas sehr..
Auf weitere Informationen kannst du dich nicht verlassen. Wenn es gut geht kommst du maximal an eine SID, nur wenn deinem System die bekannt ist, kann man damit einen Namen erhalten.
Für mich stellt sich jetzt einmal die Frage wozu das ganze und warum eine Datei die ganze Zeit sperren. Meiner Meinung nach keine gute Idee, sondern IMHO schlechtes Design.
Da ist die Idee von McWomble besser, da eine Sperrdatei mit Infos zu hinterlegen. Wenn du in deinem Programm zyklisch da einen Timestamp hineinschreibst, Kann ein anders Programm sogar feststellen, ob die Sperre noch zu recht besteht oder ein toter Lock ist. In der Sperrdatei ist natürlich Platz für jede Menge Informationen

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
... Oder statt einer Datei eine Datenbank nehmen.
-Michael
-Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6773
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
DB-Datei auf einem Share ist eine ganz schlechte Idee oder war da was anderes gemeint. Und die Desktopdatenbanken diw das versuchen, arbeiten auch mit Lockfiles.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Ist eine Datei in Nutzung/Netzlaufwerk und von Wem
Hi,
erstmal vielen Danke an McWomble das war die Lösung und dazu noch einfach und logisch nur kam ich überhaupt nicht drauf und hab damit auch das Sperren raus siehe Af0815 Thema schlechtes Design.
Vielen Vielen Dank.
erstmal vielen Danke an McWomble das war die Lösung und dazu noch einfach und logisch nur kam ich überhaupt nicht drauf und hab damit auch das Sperren raus siehe Af0815 Thema schlechtes Design.
Vielen Vielen Dank.