Brandon Williams Ответов: 1

Как удалить файл, открытый в другой программе VB.NET


Я пытаюсь сделать антивирусную программу, и она имеет защиту в реальном времени, когда она обнаруживает вирус, появляется диалоговое окно, и в метке он показывает путь к вирусному файлу, и я хочу удалить файл, но когда я пытаюсь использовать файл.метод удаления, но я получаю это сообщение: этот файл открыт в другой программе (он говорит, что он открыт в моей программе) и не может быть удален. кто-нибудь может мне помочь?

Что я уже пробовал:

Я перепробовал все но все методы не работают может кто нибудь пожалуйста помогите мне спасибо

F-ES Sitecore

Отпустите ссылки на файл в вашем коде, прежде чем пытаться удалить его. Вы не опубликовали код, поэтому я не уверен, как вы думаете, что мы можем помочь с кодом, который мы не видим, но, думаю, вы не называетесь "Dispose" для любого объекта, на который ссылается файл.

Afzaal Ahmad Zeeshan

Ты не можешь. Эта программа сначала должна освободить файл, а затем другие процессы могут получить к нему доступ. Вот как работает Windows.

Brandon Williams

как я могу заставить свою программу выпустить его? я использовал диалог открытия файла, если это какая-то помощь. Заранее спасибо.

Afzaal Ahmad Zeeshan

Если это ваша программа, то используйте любую из функций Close, Flush или Dispose, чтобы правильно освободить ее, а затем удалить.

Если это другая программа, то у вас нет никаких шансов.

1 Ответов

Рейтинг:
6

OriginalGriff

Есть способы заставить это сделать, но это плохая идея - вы, вероятно, нанесете больше вреда, заставив дескриптор закрыться преждевременно, чем сэкономите, сообщив пользователю об этом и закрыв приложение вручную.

Но... вы говорите: "its saying its open in my program", что подразумевает, что вы открыли файл - что имеет смысл, поскольку вы сканируете его - и еще не закрыли и не утилизировали свой поток с помощью switch, который Вы читаете файл. В этом случае комментарий, который я сделал в первом абзаце, вступает в силу - вы будете закрывать что-то, что использует ваше собственное приложение, и есть очень хороший шанс, что ваше приложение рухнет в результате принудительного удаления.
Вместо этого проверьте свой код и убедитесь, что все потоки, дескрипторы файлов или все, что вы используете для доступа к файлам, правильно расположены, прежде чем пытаться удалить их.

Dim isSuspect As Boolean = False
Using fs As New FileStream(path, FileAccess.Read)
	isSuspect = ScanMyFile(fs)
End Using
If isSuspect Then
	' You can delete the file here
	...

End If