powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как перехватить ошибку "Permission denied"?
11 сообщений из 11, страница 1 из 1
Как перехватить ошибку "Permission denied"?
    #32843569
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чищу Temp-директории на remote computers.
В них есть файлы, заблокированные антивирусом.
При попытке удаления такого файла возникает run-time error 70 "Permission denied",
которая НЕ ЛОВИТСЯ!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Private Sub EraseBat(ByRef src As String)
'src - путь к системному диску вида \\CompName\c$
Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
'Цикл по профилЯм:
Dim dasDir As Scripting.Folder      'Documents And Settings
Set dasDir = fso.GetFolder(src & "\Documents And Settings")
Dim ds As Scripting.Folder          'переменная типа Folder
Dim profiles As Scripting.Folders   'коллекция профилей
Set profiles = dasDir.SubFolders
Dim s As String

On Error GoTo ErrHandler            'ЧЕГО В СУПЕ НЕХВАТАЕТ ???

For Each ds In profiles             'ds - это "хомяк юзера"
    s = ds.Path & "\Local Settings\Temp"
    If fso.FolderExists(s) Then
'The DeleteFile method stops on the first error it encounters:
       fso.DeleteFile s & "\*.*", True
       fso.DeleteFolder s & "\*.*", True
    End If
Next ds
Set ds = Nothing
Set profiles = Nothing
Set dasDir = Nothing
Set fso = Nothing
Exit Sub

ErrHandler:
Dim errNo As Long, errStr As String
errNo = Err.Number: errStr = Err.Description
Err.Clear
'Обработка ошибок - здесь (должна быть...)
Resume Next
End Sub
Спасибо за помощь, на которую надеюсь...
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32843782
Один
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что значит "не ловится" ?
Когда возникает ошибка, что происходит ?
Может вы забыли выставить Break on Unhandled errors ?
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32843838
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКогда возникает ошибка, что происходит ?
Может вы забыли выставить Break on Unhandled errors ?

Этот господин не может ТАКОЕ забыть :-).

А каким образом можно заставить антивирус з а б л о к и р о в а т ь файл?
Хочу попробовать Ваш код.
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32843889
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я создал тестовый файл test.com, (стандартный проверочный файл DrWeb), запретил его Spider' ом. В Debug режиме все ловится отлично, никаких Run - Time.

С ЕХЕ - то же самое.

А какой у Вас антивирус?
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32844021
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДуракЯ создал тестовый файл test.com, (стандартный проверочный файл DrWeb), запретил его Spider' ом. В Debug режиме все ловится отлично, никаких Run - Time.

С ЕХЕ - то же самое.

А какой у Вас антивирус?"EraseBat" - удалить batxxx.tmp
При приёме почты The Bat! преобразует 7-битовую кодировку в 8-битовую.
Он создаёт временный файл batxxx.tmp, где ххх - случайный набор (16-ричных) цифр.
Как только он заканчивает преобразование, Касперский (как служба) проверяет файл на вирусы и, при нахождении оного, блокирует доступ к этому файлу. При этом всплывает "страшное окно" с сообщением о вирусе и пугает юзеров...
Достаточно его закрыть и удалить файл мимо корзины, Касперский удовлетворённо отваливает в сторону и не призывает сисадмина.
...
Сейчас сидел у дантиста и "под кайфом" пришла одна мысль. Буду думать...
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32844047
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, пока пел, забыл "об вопросе".
А если закрыть окно, а файл не удалять, Касперский ограничивает доступ к нему:
только ЛОКАЛЬНЫЙ пользователь, ЛОКАЛЬНЫЙ админ и система могут его удалять.
И он может лежать себе спокойно до скончания HDD...
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32844082
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М-да.

А если не использовать fso, по старинке, так сказать :-), тоже падает?

Или это (в смысле fso) обязательное условие?
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32844086
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пришла одна мысль......которая оказалась беспочвенной.
Подумал, не виноват ли в этом Visual Basic Scripting Edition:
у него только 2 формы On Error Statement'а
Код: plaintext
1.
On Error Resume Next
On Error GoTo  0 
А оказалось, что Один прав: у меня в проекте стояла опция Break on All errors.
Спасибо! Поймал!
По поводу "не может ТАКОЕ забыть":
и на старуху бывает проруха!
Спасибо всем!
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32844101
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДуракИли это (в смысле fso) обязательное условие?
Код: plaintext
1.
2.
DeleteFile Method
force 
     Optional. Boolean value that is true if files with the read-only attribute set are to be deleted;
Более того, от имени админа удаляет скрытые и системные файлы.
Приведенный фрагмент кода - только часть "новогодней Большой стирки"...
Спасибо!
...
Рейтинг: 0 / 0
Как перехватить ошибку "Permission denied"?
    #32844395
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторБолее того, от имени админа удаляет скрытые и системные файлы.
Приведенный фрагмент кода - только часть "новогодней Большой стирки"...
Спасибо!

И Вам спасибо за информацию.
Пока таких задач, как удаление системных файлов не было, вот и не сталкивался :-), но на будущее очень полезно.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как перехватить ошибку "Permission denied"?
    #39067909
Евгений117
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно обращение к папке также идёт из другой публичной функции

Вот код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Function nasDirExists(strPathName As String) As Boolean
 On Error Resume Next
 Dim strDir As String
 strDir = Dir(strPathName, vbDirectory)
 If (Len(strDir) = 0 Or Err = 76) Then
  nasDirExists = False
 Else
  nasDirExists = True
 End If
End Function

Private Sub Form_Load()
 If nasDirExists("C:\Test\") Then
  MsgBox "Папка существует!", vbInformation
 Else
  MsgBox "Папка не найдена...", vbInformation
 End If
End Sub


Сам по себе он работает, но если потом попробовать удалить папку выскочит ошибка как у Вас, как только Public Function nasDirExists - будет задействована

Вот другой код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub Command1_Click()
Set fso = CreateObject("Scripting.FileSystemObject")
'Перед созданием папки надо убедиться, что такая папка не существует по указанному пути
If fso.FolderExists("C:\00 Create Test Folder") Then
  MsgBox "Папка существует!", vbInformation
Else
'MsgBox "Папка не найдена...", vbInformation
 fso.CreateFolder ("C:\00 Create Test Folder") 'Создаём папку
 MsgBox "Создана папка C:\00 Create Test Folder", vbInformation
End If
End Sub

Private Sub Command2_Click()
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists("C:\00 Create Test Folder") Then
  fso.DeleteFolder ("C:\00 Create Test Folder")
  MsgBox "Удалена папка C:\00 Create Test Folder", vbInformation
Else
  MsgBox "Папка не найдена...", vbInformation
End If
End Sub



Во втором случае всё работает при любых раскладах и никаких ошибок
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как перехватить ошибку "Permission denied"?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]