Как удалить файл, который заблокирован другим процессом в С#?

Типичный метод заключается c#-language в следующем. Вы сказали, что c#.net хотите сделать это на C#, так filelock что вот...

  1. Если вы не знаете, какой процесс заблокировал файл, вам необходимо изучить список дескрипторов каждого процесса и запросить каждый дескриптор, чтобы определить, идентифицирует ли он заблокированный файл. Для выполнения этого на C#, скорее всего, потребуется P/Invoke или промежуточный C++/CLI для вызова необходимых вам собственных API-интерфейсов.
  2. После того, как вы выяснили, какой процесс (процессы) заблокировал файл, вам нужно будет безопасно внедрить небольшую собственную DLL в процесс (вы также можете внедрить управляемую DLL, но это сложнее, так как затем вам придется запустить или подключиться к среде выполнения .NET).
  3. Эта загрузочная DLL затем закрывает дескриптор с помощью CloseHandle и т. д.

По существу: способ visual-c# разблокировать «заблокированный» файл c#-language — внедрить DLL-файл в адресное file-locking пространство нарушающего file-locking процесса и закрыть его самостоятельно. Вы .cs-file можете сделать это, используя csharp собственный или управляемый filelock код. В любом случае вам понадобится filelock небольшое количество нативного c# кода или, по крайней мере, P/Invoke.

Полезные visual-c# ссылки:

Удачи!

c#

file-locking

2022-09-17T07:09:03+00:00