Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Herausfinden, welches Programm eine Datei sperrt (https://www.delphipraxis.net/128791-herausfinden-welches-programm-eine-datei-sperrt.html)

amigage 6. Feb 2009 09:34


Herausfinden, welches Programm eine Datei sperrt
 
Hallo liebe Delphi-Gemeinde,

ich habe jetzt eine Weile mit verschiedenen Suchbegriffen im Forum geforascht, aber nichts finden können.

Ich suche eine Möglichkeit, herauszufinden, welches Programm eine Datei sperrt, wenn ich keinen Zugriff auf diese Datei erhalte. Geht das? Wenn ja, wie?

Ein Link zu einem bestehenden Thread hier im Forum würde mir schon reichen :wink:

Danke.

himitsu 6. Feb 2009 10:31

Re: Herausfinden, welches Programm eine Datei sperrt
 
mit'm Hier im Forum suchenProcess Explorer kann man viel rausbekommen, oder einfach mal nach Bei Google suchenUnlocker suchen

WS1976 6. Feb 2009 11:20

Re: Herausfinden, welches Programm eine Datei sperrt
 
Hallo,
wer eine Datei in Besitz hält kannst du relativ einfach sehen:

WinXP:
Start -> Einstellungen -> Systemsteuerung -> Verwaltung -> Computerverwaltung -> Freigegebene Ordner
-> geöffnete Dateien.

Grüsse
Rainer

himitsu 6. Feb 2009 11:34

Re: Herausfinden, welches Programm eine Datei sperrt
 
Zitat:

Zitat von WS1976
WinXP:
Start -> Einstellungen -> Systemsteuerung -> Verwaltung -> Computerverwaltung -> Freigegebene Ordner
-> geöffnete Dateien.

schon probiert?

das sollten nur die Netzwerkfreigaben sein ;)

Ansonsten würde es mich wundern, da dort angeblich garade nichts geöffnet ist :stupid:

amigage 6. Feb 2009 12:54

Re: Herausfinden, welches Programm eine Datei sperrt
 
Sorry, ich habe mich vielleicht etwas falsch ausgedrückt. :(
Process Explorer und Unlocker sind mir wohl bekannt.

Ich suche eine Möglichkeit, dies in meinem Delphiprogramm herauszubekommen, um es dem Anwender mitzuteilen.
Z.B. wenn eine Datei nicht kopiert werden kann, soll die Software sagen, dass er doch das entsprechende Programm schließen soll.

Ich benötige also eine Funktion, die mir den Namen der (exe)-Datei zurückliefert, wenn ich eine gesperrte Datei abfrage.

Die o.g. Programme können es ja auch... irgendwie ;-)

mirage228 6. Feb 2009 12:58

Re: Herausfinden, welches Programm eine Datei sperrt
 
Such mal nach Bei Google suchenWhoLockMe ;)

himitsu 6. Feb 2009 13:03

Re: Herausfinden, welches Programm eine Datei sperrt
 
eine Funktion für Delphi ist mir nicht bekannt, aber so einfach wird es nicht sein, vorallem da es nicht soo viele Programme gibt, die das überhaupt auslesen können.

Es ist zwar (bedingt) möglich rauszubekommen welcher Datei ein Handle zugeordnet ist, aber dann müßtest du dich durch alle aktiven Programme hangeln (falls du die Rechte dazu hast) und ersmal 'ne Liste der offnen Handles erstellen (alle möglichen bruteforcemäßig durchzuprobiren wäre etwas Rechenintensiv), dann vermutlich diese Handle in deinen Prozess reinclonen und abfragen wozu sie gehören.

Luckie 6. Feb 2009 18:57

Re: Herausfinden, welches Programm eine Datei sperrt
 
Ohne Treiber ist keine sichere Lösung möglich.

himitsu 6. Feb 2009 20:35

Re: Herausfinden, welches Programm eine Datei sperrt
 
Zitat:

Zitat von Luckie
ist keine sichere Lösung möglich.

und selbst mit Treiber wohl auch nicht ... irgendwie soll doch die windowsinterne struktur nicht offengelegt sein und keiner weiß genau wie und ob sich da mal irgendwann wieder was dran ändert.

Delphi-Laie 7. Feb 2009 07:36

Re: Herausfinden, welches Programm eine Datei sperrt
 
Zitat:

Zitat von himitsu
irgendwie soll doch die windowsinterne struktur nicht offengelegt sein

Nun, immerhin der/die Programmierer vom Unlocker muß/müssen diese Interna doch kennen, anscheinend sogar aus dem FF. Wer mit einem Debugger umgehen kann (ich leider nicht), der müßte dem Unlocker doch so manches Geheimnis entreißen können?!

himitsu 7. Feb 2009 08:15

Re: Herausfinden, welches Programm eine Datei sperrt
 
Das Problem ist nur (wenn ich das richtig mitbekommen hab), daß es wohl keine richtige Schnittstelle seitens Windows gibt, worüger ein Programm dieses auslesen könnte.
wenn du jetzt über undokumentierte Schnittstellen geht, oder direkt über feste Speicheradressen versuchst an diese Informationen ranzukommen, dann kann in der nächsten Programmversion (neues Windows, oder einfach nur ein kleines Update) alles anders sein und nix geht mehr.

globetrotter77 7. Feb 2009 09:21

Re: Herausfinden, welches Programm eine Datei sperrt
 
Zitat:

Zitat von himitsu
wenn du jetzt über undokumentierte Schnittstellen geht, oder direkt über feste Speicheradressen versuchst an diese Informationen ranzukommen, dann kann in der nächsten Programmversion (neues Windows, oder einfach nur ein kleines Update) alles anders sein und nix geht mehr.

Das kann dir auch bei dokumentierten Schnittstellen so gehen ... siehe all die Inkompatibilitäten bei jeder neuen Windows-Version.
Was interessiert einen Entwickler bei Microsoft schon das eigene Gewäsch von gestern?
Auf der anderen Seite wäre es zugegebenermaßen auch idiotisch, immer kompatibel bis hinunter zu MS-DOS-Zeiten bleiben zu wollen.
Wenn man also eine Lösung fände, die nur für ein Betriebssystem funktioniert, wäre das doch auch schon mal was, oder?

himitsu 7. Feb 2009 09:26

Re: Herausfinden, welches Programm eine Datei sperrt
 
als Programmierer aber etwas unpraktisch ... oder wie käme es rüber, wenn in deiner Softwäre drinstünde, daß diese NUR unter Win98 liefe? und in "neueren" Versionen für die nächste Zeit nix möglich wäre, weil du erstmal suchen müßtest, wie das jetzt geht.

globetrotter77 7. Feb 2009 10:15

Re: Herausfinden, welches Programm eine Datei sperrt
 
Zitat:

Zitat von himitsu
als Programmierer aber etwas unpraktisch ... oder wie käme es rüber, wenn in deiner Softwäre drinstünde, daß diese NUR unter Win98 liefe? und in "neueren" Versionen für die nächste Zeit nix möglich wäre, weil du erstmal suchen müßtest, wie das jetzt geht.

zugegeben, das wäre etwas peinlich ... *grins*
aber als erster Ansatz immer noch besser als gar nichts machen zu können

Edit:
und wenn wir hier erst mal eine Lösung für ein Betriebssystem haben, dann lassen sich die anderen sicher auch finden, oder?
würde allerdings nicht unbedingt mit Windows 98 anfangen, sondern eher mit Windows 2000


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.

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