Submitted By: Steve Yandl

Sends a file to the Recycle Bin instead of permanently deleting that file.

Visual Basic
Edit|Remove
'  Discard files to the recycle bin
'  Not intended for use on exe files
'  Not intended for use on Win98 or earlier systems
'     Steve Yandl


strFileToToss = "C:\Test\trash.txt"


Const HKEY_CURRENT_USER = &H80000001
strComputer = "."

Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FileExists(strFileToToss) Then
   WScript.Quit
End If

If fso.GetExtensionName(strFileToToss) = "exe" Then
   WScript.Quit
End If

strFolderParent = fso.GetParentFolderName(strFileToToss)
strFileName = fso.GetFileName(strFileToToss)


'   Make sure recycle bin properties are set to NOT display request for delete confirmation

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer"
strValueName = "ShellState"

oReg.GetBinaryValue HKEY_CURRENT_USER,strKeyPath, _
    strValueName,strValue

strOrigBinSet = strValue(4)
strValue(4) = 39

errReturnA = oReg.SetBinaryValue _
   (HKEY_CURRENT_USER, strKeyPath, strValueName, strValue)


'  Use the Shell to send the file to the recycle bin

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strFolderParent)
Set objFolderItem = objFolder.ParseName(strFileName)

objFolderItem.InvokeVerb("&Delete")


'  Restore the User's Property settings for the Recycle Bin

strValue(4) = strOrigBinSet
errReturnB = oReg.SetBinaryValue _
   (HKEY_CURRENT_USER, strKeyPath, strValueName, strValue)