Убить выбранные файлы в Корзине - PullRequest
1 голос
/ 13 января 2020

Я создаю инструмент очистки, который перечисляет и уничтожает (используя Kill) любые файлы в определенных местах на пользовательском P C. Мой инструмент хорошо работает во всех местах, кроме корзины (C: \ $ Recycle.Bin).

Я получаю следующую ошибку:

Ошибка времени выполнения ' 75 ': путь / ошибка доступа к файлу

Как мне обойти эту ошибку, чтобы удалить / уничтожить файл в корзине? Я не хочу опустошать всю корзину. Я хочу удалить выбранные файлы.

1 Ответ

4 голосов
/ 13 января 2020

Сначала вам нужно получить доступ к реальной папке корзины. Это системная папка, к которой можно получить доступ через NameSpace -метод Shell.Application -объекта. Вам нужно передать число этому методу (я нашел список здесь ), для корзины это &HA& (называемое BitBucket )

Когда вы Имея папку, вы можете l oop над элементами в ней, просто обратите внимание, что она может содержать файлы и папки, и вам нужно различить guish. Вы можете использовать FileSystemObject, чтобы удалить нужные файлы / папки.

Sub RemoveFromRecyleBin()

    Const BITBUCKET = &HA&

    Dim sh As Object, folder as Object, fso As Object
    Set sh = CreateObject("Shell.Application")
    Set folder = sh.Namespace(BITBUCKET)
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim item As Object
    For Each item In folder.Items
        Debug.Print item.Type, item.Name, item.Path

        If InStr(item.Name, "Junk") Then  ' Replace by your own logic
            If item.IsFolder Then
                fso.DeleteFolder item.Path
            Else
                fso.DeleteFile item.Path
            End If
        End If
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...