I have been asked to come up with a solution to copy specific files that have been deleted to the Recycle Bin. I am far from being an expert programmer, so I am more than stumped on how to resolve the error I am receiving. The strange thing is, any computer I am physically logged in as under my works username, the program works fine. When I have the program startup under a different user is when I get the message here.
Here is the problem code in my basic vb.net program:
VB.NET:
System.InvalidCastException: Unable to cast COM object of type 'Shell32.ShellClass' to interface type 'Shell32.IShellDispatch6'.
This operation failed because the QueryInterface call on the COM component for the interface with IID '{286E6F1B-7113-4355-9562-96B7E9D64C54}' failed due to the following error:
No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease)
at Shell32.ShellClass.NameSpace(Object vDir)
at WindowsApplication1.Form1.DeleteFilesFromRecycleBin(String Folder, String Folder1)
Here is the problem code in my basic vb.net program:
Sub DeleteFilesFromRecycleBin(Folder As String, Folder1 As String)
Dim Filename1 As String
Try
Dim picList As String() = Directory.GetFiles(Folder)
Dim SH As New Shell32.Shell
Dim RecycleBin As Shell32.Folder = SH.NameSpace(Shell32.ShellSpecialFolderConstants.ssfBITBUCKET)
Dim SB As New StringBuilder
'Loop through the Recycle Bin and get each Items Name
For Each Item As Shell32.FolderItem In RecycleBin.Items
If (Item.Type) = "DAT File" Or (Item.Type) = "PH1 File" Then
Filename1 = Item.ModifyDate.ToString("MMddyyyy")
checkFolder(Filename1)
My.Computer.FileSystem.CopyFile(Item.Path,
"C:\archive" & Filename1 & "" & Item.Name)
End If
Next Item
Catch ex As Exception
TextBox1.Text = ex.ToString
End Try
End Sub