Open File Lock Handle

Finde heraus, welcher Prozess
deine Datei, deinen Ordner oder deinen Port verwendet.

Eine Datei lässt sich nicht umbenennen oder löschen? oflh zeigt, welche Prozesse sie verwenden und welche App dahintersteckt. Untersuche Dateien, Ordner, ganze Laufwerke und lokale Ports in der Desktop- oder interaktiven Terminal-App für Windows, Linux und macOS.

Kostenlos und Open Source · Windows, Linux, macOS · x86-64 und ARM64 · v0.8.0

OFLH Desktop listet die Prozesse auf, die einen Ordner verwenden, mit Details zum ausgewählten Prozess

Für Entwickler und Admins bei Meldungen wie „Die Datei ist in einem anderen Programm geöffnet“, „Device or resource busy“ oder „address already in use“.

  1. Datei oder Ordner öffnen, oder Pfad hineinziehen. Port: Ports öffnen und port:3000 suchen.
  2. Auf einen Prozess klicken: Dateien, Ports und Prozesshierarchie.
  3. App schließen, oder Beenden und bestätigen (vorher speichern).

Vorgestellt & gelistet bei

WinFuture
Redaktioneller Beitrag

OFLH bei WinFuture

Vielen Dank an die WinFuture-Redaktion für die Vorstellung von OFLH.

Beitrag lesen

Terminal-App und Desktop-App

Derselbe Scanner, dieselben Ergebnisse. Nimm die Oberfläche, die zu deiner Arbeitsweise passt.

OFLH Desktop in Aktion

Wenn sich eine Datei nicht löschen lässt oder ein Server nicht startet, finde den Prozess und die Anwendung, die dahintersteckt.

Windows-Screenshots aus der Projekt-README · Zum Vergrößern auf ein Bild klicken

  1. Finde, wer deine Datei verwendet

    Wähle Datei öffnen oder Ordner öffnen, zieh einen Pfad ins Fenster oder untersuche ein ganzes Laufwerk wie C:\. Suche nach Prozessname, PID oder vollständigem Pfad. Eine ausgewählte Zeile zeigt Passende Dateizugriffe und die Prozesshierarchie.

    Unter Windows kannst du auch eine Datei oder einen Ordner im Explorer rechts anklicken und Datei untersuchen oder Ordner untersuchen wählen.

    OFLH Desktop unter Windows untersucht C:\, mit Firefox-Filter, passenden Dateizugriffen und der Prozesshierarchie des ausgewählten Prozesses
    Desktop-App-Beispiel: Dateien und Prozesse unter Windows.
  2. Wähle die passende Prozessaktion

    Über die Prozesshierarchie findest du den Editor, Browser, das Terminal oder den Dienst hinter einem Hilfsprozess. Per Rechtsklick kannst du den Pfad oder die PID kopieren, die Datei im Dateimanager zeigen oder passende Dateizugriffe ansehen.

    Eine offene Datei ist kein Beweis für eine Sperre. Nur Sperrhinweise filtert nach Belegen; bei Besitzer unbestätigt kann Windows den Verursacher nicht nachweisen.

    Prozessaktionsmenü von OFLH Desktop für firefox.exe unter Windows: Pfad und PID kopieren, Dateizugriffe ansehen, Beenden und Beenden erzwingen
    Desktop-App-Beispiel: das Menü mit Prozessaktionen.
  3. Bestätige, bevor du einen Prozess beendest

    Schließe die Anwendung möglichst normal. Bei Beenden nennt die Bestätigung alle ausgewählten Prozesse, auch durch Filter versteckte, und wählt standardmäßig Abbrechen. OFLH prüft die Prozessidentität vor jeder Aktion erneut.

    Speichere vorher: Beim Beenden können ungespeicherte Änderungen verloren gehen. Aktualisiere danach mit F5, um zu prüfen, ob die Datei noch verwendet wird.

    OFLH-Desktop-Bestätigung zum Beenden von firefox.exe mit PID, Warnung vor Datenverlust sowie Abbrechen- und Beenden-Schaltflächen
    Desktop-App-Beispiel: Bestätigung vor dem Beenden.
  4. Finde den Besitzer eines lokalen Ports

    Öffne Ports und suche port:3000, um den gebundenen Prozess zu finden. Grenze die Liste mit tcp, udp oder pid:1234 ein. Eine ausgewählte Zeile zeigt Dateien und Prozesshierarchie.

    Ports zeigt lokale TCP-Listener und gebundene UDP-Sockets. Bestehende Verbindungen und die Erreichbarkeit von anderen Rechnern werden nicht geprüft.

    Lokale Ports in OFLH Desktop unter Windows mit Steam-Filter, TCP-Listenern, gebundenen UDP-Sockets, PIDs, Adressen und Prozesshierarchie
    Desktop-App-Beispiel: Besitzer lokaler TCP- und UDP-Ports.

Warum oflh?

Für den Moment, in dem Löschen, Umbenennen, Aushängen oder ein Serverstart fehlschlägt und du wissen willst, warum.

Dateien, Ordner, ganze Laufwerke

Gib oflh eine Datei, einen Ordner oder C:\. Ein Ordnerscan erfasst alles darin und zeigt, wie jeder Prozess es nutzt: geöffnete Datei, eingeblendete Datei, Programmdatei oder (unter Linux und macOS) Arbeitsverzeichnis.

Ports

oflh --port 3000 zeigt den TCP-Listener oder gebundenen UDP-Socket auf einem Port, mit PID und Adresse. Die Socket-Tabellen werden direkt gelesen; oflh ruft weder lsof noch ss oder netstat auf.

Elternprozessbaum

Zu jedem Ergebnis gehört die Kette der Elternprozesse. So führst du einen node- oder dotnet-Worker auf den Editor, das Terminal oder den Dienst zurück, der ihn gestartet hat.

Geöffnet heißt nicht gesperrt

Sperrhinweise werden getrennt von einfach geöffneten Dateien angezeigt. Kann Windows nicht belegen, welcher Prozess eine Sperre hält, steht dort „Besitzer unbestätigt“ statt einer Vermutung.

Vorsichtig mit deinen Prozessen

oflh schließt nie Handles in fremden Prozessen. Es bittet die Anwendung, sich zu beenden, oder beendet sie nach einer Rückfrage, bei der „Abbrechen“ vorausgewählt ist, und prüft vorher erneut PID und Startzeit.

Lokal und Open Source

Gescannt wird nur auf deinem Rechner. Geschrieben in Rust, MIT-lizenziert und auf nativen Windows-, Linux- und macOS-Runnern für x86-64 und ARM64 getestet.

Eine Alternative zu lsof, handle.exe und Process Explorer

lsof und fuser decken Linux und macOS ab, Ressourcenmonitor, Process Explorer und handle.exe decken Windows ab. Das sind gute Werkzeuge. oflh unterscheidet sich in drei Punkten:

  • Eine Oberfläche für drei Betriebssysteme

    Du fragst unter Windows, Linux und macOS auf dieselbe Weise, welcher Prozess eine Datei oder einen Port hält, wählst den Prozess aus und beendest ihn direkt in der App. Kein Abtippen von PIDs für kill oder taskkill.

  • Ganze Laufwerke ohne Verzeichnisdurchlauf

    oflh wurde gezielt auf Geschwindigkeit optimiert: Es gleicht die Dateien, die laufende Prozesse halten, mit deinem Ziel ab, statt die Festplatte zu durchlaufen. Ein Scan von ganz C:\ oder / dauerte in unseren eigenen Messungen 195–510 ms.

  • Sperrhinweise getrennt von „Datei ist geöffnet“

    Geöffnete Dateien und echte Sperrhinweise werden getrennt angezeigt. Kann Windows nicht belegen, welcher Prozess einen Freigabekonflikt hält, steht dort „Besitzer unbestätigt“ statt eines geratenen Schuldigen.

Ganze Laufwerke in Sekundenbruchteilen prüfen

oflh ist auf Geschwindigkeit optimiert. Es durchläuft keinen Verzeichnisbaum, sondern fragt das Betriebssystem, welche Dateien jeder laufende Prozess hält. Ein Scan von ganz C:\ oder / dauert deshalb kaum länger als ein kleiner Ordner.

Windows x64 · C:\
352 ms
Windows ARM64 · C:\
510 ms
Linux x86-64 · /
195 ms

Windows-Ordner mit 2.048 Dateien, davon 128 geöffnet (Median aus fünf Läufen): früheres Restart-Manager-Backend → aktuelles Backend

  • x64 Restart-Manager-Backend: 3.303 ms aktuelles Backend: 315 ms
  • ARM64 Restart-Manager-Backend: 5.384 ms aktuelles Backend: 353 ms

Das sind unsere eigenen Messungen: Einzelläufe des Backends am 5.–6. Oktober 2026 (Windows auf GitHub-Runnern, Linux auf einem lokalen Rechner), ohne App-Start. Hardware, Prozessanzahl und Berechtigungen verändern das Ergebnis. Methodik, Rohdaten und Anleitung zum Nachmessen →

Für ein ganzes Laufwerk öffnest du C:\ oder / wie jeden anderen Ordner. Schnellstart ↑

Grenzen: was oflh nicht kann

Gut zu wissen, bevor du herunterlädst.

  • Nicht skriptfähig (noch)

    Beide Apps sind interaktiv. Die Terminal-App beendet sich mit einem Fehler, wenn sie nicht mit einem Terminal verbunden ist, und es gibt keine JSON-Ausgabe. Für Skripte oder CI ist sie daher nicht gedacht.

  • Du siehst, was dein Konto sehen darf

    Prozesse anderer Benutzer oder vom System geschützte Prozesse können fehlen; unvollständige Scans zeigen „Ergebnisse ggf. unvollständig“. Mit erhöhten Rechten siehst du mehr.

  • Windows nennt nicht immer den Sperrbesitzer

    Ein Freigabekonflikt beweist, dass eine Datei eingeschränkt ist, nicht welcher Prozess sie eingeschränkt hat. Solche Zeilen zeigen „Besitzer unbestätigt“.

  • Nur lokale Ports

    Ports heißt: TCP-Listener und gebundene UDP-Sockets, keine bestehenden Verbindungen und keine Aussage darüber, ob ein Port von einem anderen Rechner erreichbar ist.

  • Unsignierte Installer

    Die Releases sind weder codesigniert noch notarisiert. Windows kann „Unbekannter Herausgeber“ anzeigen, und macOS kann die App blockieren. Vergleiche den Download mit den SHA-256-Prüfsummen in checksums.txt, bevor du ihn zulässt.

oflh herunterladen

Kostenlos für Windows, Linux und macOS, jeweils für x86-64 und ARM64.

Aktuelles Release: v0.8.0 · Versionshinweise

Desktop

Wähle diese Version für eine grafische App mit Fenstern, Schaltflächen und einer Prozessliste.

macOS

Desktop-App

Desktop-App herunterladen.dmg · Apple Silicon
PaketApple SiliconIntel
.dmgHerunterladenHerunterladen
Installationshinweis für macOS

Da die Anwendung nicht signiert ist, kann macOS sie als „beschädigt“ melden. Gib sie mit diesem Befehl im Terminal manuell frei und öffne sie erneut. Passe den Pfad an, falls sie woanders installiert ist.

Befehl
xattr -cr "/Applications/OFLH Desktop.app"
Mit Homebrew installieren macOS
Befehl
brew install --cask karimz1/tap/oflh-desktop

Der Homebrew-Tap wird separat aktualisiert und kann hinter dem aktuellen Release zurückliegen. Mit brew info siehst du, welche Version installiert wird.

Installationshinweis für macOS

Auch die Homebrew-Version ist unsigniert. macOS kann den ersten Start blockieren.

Da die Anwendung nicht signiert ist, kann macOS sie als „beschädigt“ melden. Gib sie mit diesem Befehl im Terminal manuell frei und öffne sie erneut. Passe den Pfad an, falls sie woanders installiert ist.

Befehl
xattr -cr "/Applications/OFLH Desktop.app"

Terminal

Diese Version läuft in einem Terminal. Öffne PowerShell unter Windows oder ein Terminal unter macOS und Linux. Ein Doppelklick auf die CLI-Datei öffnet keine Desktop-App.

Mit Homebrew installieren macOS / Linux

Befehl
brew install karimz1/tap/oflh-cli

Der Homebrew-Tap wird separat aktualisiert und kann hinter dem aktuellen Release zurückliegen. Mit brew info siehst du, welche Version installiert wird.

Wähle die Datei für dein Betriebssystem und deinen Prozessor. Es ist eine einzelne Programmdatei ohne Installation. Benenne sie in oflh um (oflh.exe unter Windows), mache sie unter macOS und Linux ausführbar und lege ihren Ordner in den PATH.

Terminal-App starten

Ohne Installation: Download umbenennen und im Ordner starten, in dem er liegt.

macOS / Linux

Befehl
mv ./oflh-cli.darwin.arm64 ./oflh
chmod +x ./oflh
./oflh ./build

Beispiel für Apple Silicon. Intel-Mac: oflh-cli.darwin.amd64. Linux: oflh-cli.linux.amd64 oder oflh-cli.linux.arm64.

Windows · PowerShell

Befehl
Rename-Item .\oflh-cli.windows.amd64.exe oflh.exe
.\oflh.exe .\build

Beispiel für x86-64. ARM64: oflh-cli.windows.arm64.exe.

Die Releases sind weder codesigniert noch notarisiert. Windows kann „Unbekannter Herausgeber“ anzeigen, und macOS kann die App blockieren. Vergleiche den Download mit den SHA-256-Prüfsummen in checksums.txt, bevor du ihn zulässt. Installationshinweise.

FAQ

Was jedes Betriebssystem erkennen kann und was nicht: Plattformunterstützung →

Wie finde ich heraus, welcher Prozess eine Datei unter Windows verwendet?

Windows meldet „Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird“ oder „Die Datei ist in einem anderen Programm geöffnet“, sagt aber nicht, in welchem. Starte oflh pfad\zur\datei in PowerShell oder öffne die Datei in OFLH Desktop. Du siehst jeden Prozess, der sie verwendet, auch Programme, die sie als Modul geladen haben. Die Ansicht „Gesperrte Dateien“ zeigt, ob ein Freigabekonflikt beim Lesen, Schreiben oder Löschen besteht. Für einen Ordner oder ein ganzes Laufwerk gibst du den Ordner oder C:\ an.

Wie finde ich heraus, welcher Prozess einen Port belegt?

Wenn ein Server mit „address already in use“ (EADDRINUSE) abbricht, starte oflh --port 3000. Du siehst den TCP-Listener oder gebundenen UDP-Socket auf diesem Port mit PID, Prozessname und Adresse; oflh --ports listet alle auf. In der Desktop-App öffnest du die Ansicht „Ports“ und suchst nach port:3000. Angezeigt werden nur lokale Bindungen, keine bestehenden Verbindungen.

Was bedeutet „Device or resource busy“ und wie behebe ich es?

Ein Prozess hat noch eine Datei, eine Speichereinblendung oder sein Arbeitsverzeichnis in dem Pfad, den du löschen oder aushängen willst. Starte oflh mit diesem Pfad. Du siehst, welche Prozesse ihn wie nutzen und welche Anwendung sie gestartet hat, und kannst dann den richtigen schließen oder beenden. „Text file busy“ bedeutet, dass ein Prozess diese Datei ausführt; sie erscheint dann als Programmdatei.

Kann ich ganz C:\ oder / auf einmal prüfen?

Ja. Starte oflh 'C:\' in PowerShell oder oflh / unter Linux, oder wähle das Wurzelverzeichnis in der Desktop-App über „Ordner öffnen“. oflh gleicht aktive Prozessreferenzen ab, statt die Festplatte zu durchlaufen. Scans ganzer Laufwerke dauerten deshalb in unseren eigenen Messungen zwischen 195 und 510 ms. Siehe die Messungen.

Ist eine geöffnete Datei dasselbe wie eine gesperrte Datei?

Nein. Die Ansicht „Prozesse“ listet jeden Prozess mit einer Referenz auf das Ziel. „Gesperrte Dateien“ („Nur Sperrhinweise“ in der Desktop-App) verlangt echte Belege: POSIX-, flock- oder OFD-Sperren unter Linux, Byte-Range-Konflikte unter macOS und Freigabekonflikte unter Windows. Windows kann nicht immer belegen, welcher Prozess einen Freigabekonflikt verursacht hat; solche Zeilen sind als „Besitzer unbestätigt“ markiert.

Kann oflh eine Datei entsperren, ohne das Programm zu schließen?

Nein. Wer ein Handle in einem fremden Prozess zwangsweise schließt, kann dessen Zustand beschädigen. Deshalb macht oflh das nicht. Es zeigt dir den Prozess und die Anwendung dahinter, und du schließt sie regulär oder beendest sie nach einer Rückfrage, bei der „Abbrechen“ vorausgewählt ist. Speichere vorher deine Arbeit: Beim Beenden können ungespeicherte Änderungen verloren gehen.

Wie finde ich die Anwendung hinter einem Hintergrundprozess?

Wähle den Prozess aus und sieh dir seinen Elternprozessbaum an. Er reicht vom ältesten erfassten Elternprozess bis zum ausgewählten Prozess und verbindet einen Worker wie node oder dotnet mit dem Editor, Terminal oder Dienst, der ihn gestartet hat. In der Terminal-App fokussierst du den Baum mit Tab. Nicht identifizierbare Elternprozesse werden als nicht verfügbar angezeigt.

Brauche ich Administrator- oder Root-Rechte?

Nein. oflh läuft als normaler Benutzer und zeigt die Prozesse, die dein Konto prüfen darf; fehlen welche, meldet es „Ergebnisse ggf. unvollständig“. Mit erhöhten Rechten siehst du mehr. Wird das Beenden verweigert, bietet die Desktop-App „Mit Administratorrechten erneut versuchen“ an.

Kann ich oflh in Skripten verwenden?

Noch nicht. Beide Apps sind interaktiv: Die Terminal-App beendet sich mit einem Fehler, wenn sie nicht mit einem Terminal verbunden ist, und es gibt keine JSON-Ausgabe.

Lädt oflh meine Dateien oder Scanergebnisse hoch?

Nein. Gescannt wird lokal; Dateinamen, Inhalte, Prozessdaten und Ergebnisse bleiben auf deinem Rechner. Release-Builds prüfen auf neue Versionen, indem sie eine kleine JSON-Datei von dieser Website abrufen, mit GitHub als Ausweichquelle. Die Anfrage enthält keine Pfade oder Prozessdaten. In der Terminal-App schaltest du das mit --no-update-check ab. Quellcode und Build-Protokolle sind auf GitHub öffentlich.