C# Dateizugriff bei Verwendung von anderen Prozessen

Zhen

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
299
Hallo Leute,
ich beschreibe mal mein Anliegen möglichst kurz und knapp. :D

Mich würde es sehr interessieren, ob es eine Möglichkeit gibt in C#,
dass man herausfindet welche Prozesse gerade auf eine Datei zugreifen
und diese dann eventuell beendet...

Sowas wäre z.B. bei Programmupdates ja sehr interessant.

Will in meine Anwendung eine automatische Update-Funktion einbauen,
aber da kann es sein, dass anderweitige Prozesse/Programme eben auf
Dateien meiner Anwendung zugreifen, oder dass mehrere Clients meine
Anwendung über einen UNC Pfad gestartet haben.

Hoffe ihr könnt mir da weiterhelfen ;)
 
Wenn du automatische Updates möchtest, dann bau doch eine ClickOnce Anwendung. Da sparst du dir eine Tonne Arbeit.
 
Naja... es hat mehrere Gründe wieso ich es selber machen will :D

1. Ich hab dann doch alle Freiheiten der Welt wenn ich mir die Update-Routine selber überlege und schreibe
2. Ich benutze die Express-Version von Visual C# und da ist nichts mit ClickOnce :P
 
Zhen schrieb:
Hallo Leute,
Mich würde es sehr interessieren, ob es eine Möglichkeit gibt in C#,
dass man herausfindet welche Prozesse gerade auf eine Datei zugreifen
und diese dann eventuell beendet...
Wenn Du nur herausfinden willst, ob eine Datei gerade von einem anderen Prozess benutzt wird:

http://stackoverflow.com/questions/876473/is-there-a-way-to-check-if-a-file-is-in-use

Wenn Du allerdings auch noch herausfinden willst von welchem Prozess, wird es komplizierter, eine mögliche Lösung wäre sowas:

http://www.codeproject.com/Articles/18975/Listing-Used-Files

Dort werden allerdings inoffizielle ("SYSTEM_HANDLE_INFORMATION") Sachen benutzt, ist also nicht ganz "sauber".


HTH

BigNum
 
Ist schon mal ein Anfang. Danke werde mich gleich mal einlesen :)

Wenn jemand noch andere Möglichkeiten kennt oder Tipps hat, dann
wäre ich sehr dankbar dafür.

PS: bevorzugt natürlich in C# :D
 
Also ich würde definitiv nicht die Prozesse, die auf die Dateien zugreifen automatisch beenden. Besser wäre es, dem Benutzer die Prozesse zu zeigen und ihn darauf hinzuweisen, dass diese erst geschlossen werden müssen, bevor das Update starten kann.

Du könntest dem Benutzer z.B. auch die Möglichkeit geben, diese Prozesse über dein Programm zu beenden aber automatisch etwas abschießen würde ich nicht.
 
Da hast du wohl recht... etwas zu riskant einfach automatisch die Prozesse abzuschießen :D
 
Zurück
Oben