Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Gibt es eine Möglichkeit über C# herauzufinden, welcher Prozess eine Datei sperrt?
thore.fiedermann
myCSharp.de - Member

Avatar #avatar-2373.jpg


Dabei seit:
Beiträge: 31
Herkunft: Deutschland

Themenstarter:

Gibt es eine Möglichkeit über C# herauzufinden, welcher Prozess eine Datei sperrt?

beantworten | zitieren | melden

Guten Morgen

Kurze Beschreibung vorweg:
Ich habe zwei Prozesse, die Informationen über eine Dateischnittstelle austauschen.
Prozess1: Der schreibt die Datei. Diesen Prozess kann/darf ich nicht verändern. Der ist so, wie er ist.
Prozess2: Mein C#-Prozess. Der lauscht auf den Ordner und wird benachrichtigt, wenn die Datei erzeugt wird. Dann nimmt er diese Datei und benennt sie um (damit neue Daten gesendet werden können), liest sie aus und löscht sie danach.
Es handelt sich immer nur um eine Datei von wenigen kB an Daten. Nichts desto trotz, ist es möglich, dass die Datei noch gesperrt ist, wenn Prozess2 darauf zugreifen will. Dafür habe ich einfach eine Schleife eingebaut, die die Datei 5 mal in einem Abstand von 0,5 Sekunden umbenennen möchte. Das langt eigentlich immer.

Das Problem:
Ich habe eine System, wo dieser Zugriff immer wieder misslingt. Ich weiß aber nicht welcher Prozess, diese Datei sperrt. Prozess1 ist eigentlich unverdächtig. Normalerweise funktioniert die Kommunikation so. Ein Virenscanner wurde bereits deaktiviert und kann damit ausgeschlossen werden.
Über den Recourcenmonitor von Windows bin ich zu langsam.
Gibt es eine Möglichkeit über C# herauzufinden, welcher Prozess eine Datei sperrt? Oder über die Konsole (Eine Batchdatei könnte ich anstoßen).

Ich hoffe ich konnte mein Problem genau genug beschreiben, sonst fragt gerne nach.

Gruß Thore

PS: Im Forum und im Internet bin ich nicht fündig geworden "Datei gesperrt", "Dateizugriff", "Wer greift auf meine Datei zu?", "c# zur laufzeit herausfinden, welcher prozess eine datei gesperrt hat", "c# datei gesperrt herausfinden von wem", "Dateizugriff verweigert"
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 695
Herkunft: OWL

beantworten | zitieren | melden

Guten Morgen Thore,

hier sind einige Antworten zu dem Thema zu finden: How do I find out which process is locking a file using .NET?


Gruß
Micha
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 3950

beantworten | zitieren | melden

Du solltest gleich mit englischen Begriffen suchen, z.B. "windows detect file locks".
Daher sollte dir Find out which process is locking a file or folder in Windows weiterhelfen (falls du ein Programm dort installieren darfst: "Process Explorer", sonst evtl. das Powershell-Skript).

Edit: Hier direkt der Link zu den Sysinternals Process Utilities.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers