![]() |
Prozess finden, der Datei offen hat
Hallo #,
geg. ist der Name einer Datei (incl. Pfad): Ich möchte jetzt herausbekommen, welcher Prozess diese Datei offen hat (falls es einen gibt). Folgender C-Code macht das für ein Verzeichnis. ![]() Hat jemand schon eine Delphi-Version dafür gefunden ? Oder ohne das NtQuerySystemInformation, laut MSDN ist das eine OS-interne Funktion, die sich von OS-Version zu OS-Version ändern kann. Danke Heiko |
AW: Prozess finden, der Datei offen hat
Dafür wirst du einen Dateisystemtreiber brauchen, um zuverlässige Informationen zu bekommen. Es gibt auch Lösungen für den User-Mode, nur sind diese nicht zuverlässig:
![]() |
AW: Prozess finden, der Datei offen hat
ntQuerySystemInformation funktioniert von von NT4 ab eigentlich recht gut, ob der Spaß ab NT6 und neuer noch funktioniert, kann ich nicht sagen. Generell ist es aber wenig verwunderlich, dass ein so direkter Zugriff auf Systeminformationen versionsspezifisch ist.
Vielleicht einen Blick wert: ![]() |
AW: Prozess finden, der Datei offen hat
Zitat:
|
AW: Prozess finden, der Datei offen hat
Also die Aussage stammt ursprünglich von Nico. Und wenn du dir meinen FileUnlocker (noch ohne Unlock-Funktion) anguckst, dann funktioniert er nicht zuverlässig. Auf meinem heimrechner fzunktioniert er auf anderen Rechnern bleibt er hängen.
![]() |
AW: Prozess finden, der Datei offen hat
Zitat:
Allerdings kann es sein, daß eine 32bit-Anwendung auf 64bit-Windows Probleme bekommt. Aber das müßte man erstmal testen ... |
AW: Prozess finden, der Datei offen hat
Hallo,
ich will eigentlich meinem Innosetup helfen, wenn Dateien im System überschrieben werden sollen. Davor will ich prüfen, ob die Datei offen ist, und wenn ja, von wem sie geöffnet ist. Heiko |
AW: Prozess finden, der Datei offen hat
Puh, mit InnoSetup kenne ich mich nicht aus. Und "Kontext" meinte übrigens den Kontext in dem Nico seine Aussage gemacht hat.
|
AW: Prozess finden, der Datei offen hat
Es ging darum den Prozess zu finden, der eine oder mehrere Dateien geöffnet hat und so den Zugriff auf die Dateien blockiert hat. Eventuell findet man den Beitrag hier im Forum noch.
|
AW: Prozess finden, der Datei offen hat
Zitat:
|
AW: Prozess finden, der Datei offen hat
Habs:
![]() Zitat von dir: Zitat:
|
AW: Prozess finden, der Datei offen hat
Zitat:
Aber Nico hat recht, und zwar hier: Zitat:
I stand corrected :zwinker: |
AW: Prozess finden, der Datei offen hat
Zitat:
google: "site:delphipraxis.net suchwort(e)" |
AW: Prozess finden, der Datei offen hat
Zitat:
|
AW: Prozess finden, der Datei offen hat
Zitat:
|
AW: Prozess finden, der Datei offen hat
Ich habe es für mich mal notiert:
![]() |
AW: Prozess finden, der Datei offen hat
|
AW: Prozess finden, der Datei offen hat
Zitat:
|
AW: Prozess finden, der Datei offen hat
Habe mal grob drübergeschaut. Ist in den Ressourcen. Erstmal ist die x64-Version mit enthalten und zudem noch mindestens einen x64-Treiber enthält und die (äußere) 32bit-EXE enthält ebenfalls einen 32bit-Treiber.
|
AW: Prozess finden, der Datei offen hat
Ich glaube ab Vista (oder Win7) gibt es eine neue API, die es ermöglicht den Namen und Grund einer Dateisperrung herauszufinden. Dazu muss aber der Prozess, der die Datei öffnet, diesen Grund auch angeben. Leider ist mir grad entfallen, wie die API heißt.
|
AW: Prozess finden, der Datei offen hat
Ginko hilft ;)
|
AW: Prozess finden, der Datei offen hat
Zitat:
|
AW: Prozess finden, der Datei offen hat
AFAIK SpeedCommander nutzt diese API bereits. Man kann dann auch den Titel der Anwendung sehen.
|
AW: Prozess finden, der Datei offen hat
Nach etwas Recherche:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr. |
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