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

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

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

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

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

Удачи!

c#

file-locking

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