Solved

Question about deleting files

Posted on 2003-11-11
8
610 Views
Last Modified: 2008-02-01
Is there any other way to delete a file other then using a FSO or the Kill method?

I have a computer that connectes to remote machines, and deletes files out of a specified folder if it is older then 5 days.  Everything works great, except i receive this error about half of the time:

Runtime error: -2147024832  Description: Method '~' of object '~' failed.

I seem to get it on any number of machines (there is 12 machines that i delete from).  I know it is not a hardware issue (bad hard drive, network issues, etc) because i can delete these files manually via windows (also working remotely, connected to the share).  I have my program dumping all information when it encounters this error, so i know which directory it was trying to delete.  Everything is fine, and i cant figure out what is causing this error.

Any ideas on this, or another way to delete files?

I have found information about it being a problem with windows, but only on windows 2000 or less (fixed after win2k SP1).  All of the PCs have the latest SP on them (all running windows 2000 SP4).  So i dont think that is the issue.

Explained in http://www-tcsn.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_20736947.html

0
Comment
Question by:kmorris1186
8 Comments
 
LVL 24

Assisted Solution

by:R_Rajesh
R_Rajesh earned 25 total points
ID: 9720896
Hi kmorris1186,

found this snippet on the web, uses api:

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
       pTo As String
        fFlags As Integer
      fAnyOperationsAborted As Boolean
        hNameMappings As Long
       lpszProgressTitle As String
End Type

Private Declare Function SHFileOperation Lib "shell32.dll"
        Alias  "SHFileOperationA" (lpFileOp As
        SHFILEOPSTRUCT) As Long

Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
'No user interface will be displayed if an error occurs.
Private Const FOF_NOERRORUI = &H400
Private Const FOF_NOCONFIRMATION = &H10 ' Don't prompt the user.

Function KillToRecycleBin(ByVal strFileToDelete As String, _
Optional ByVal PromptUser As Boolean = False) As Long
    Dim lngFlags As Long
    Dim FileOperation As SHFILEOPSTRUCT
   
    lngFlags = FOF_ALLOWUNDO Or FOF_NOERRORUI
    If Not PromptUser Then lngFlags = lngFlags Or FOF_NOCONFIRMATION
   
    With FileOperation
        .wFunc = FO_DELETE
        .pFrom = strFileToDelete
        .fFlags = lngFlags
    End With
    ' Returns 0 if no error
     KillToRecycleBin = SHFileOperation(FileOperation)
End Function

To send a file to the recycle bin use:
KillToRecycleBin "C:\TheFileToDelete.txt"

To prompt the user to send a file to the recycle bin use:
KillToRecycleBin "C:\TheFileToDelete.txt", True

Cheers!
0
 
LVL 7

Author Comment

by:kmorris1186
ID: 9721005
do you think this would delete using the full UNC path?

Like "\\machinename\share\" ?

i will check it out, she what i can get it to do..

thanks
0
 
LVL 1

Expert Comment

by:Crazy_king_in
ID: 9721618
Try This

Paste this in the Form General section
Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long

Then call
DeleteFile \\FileName
0
 
LVL 7

Author Comment

by:kmorris1186
ID: 9726279
would that also work with a whole directory?  I am actually deleting images out of folders.  If i delete the images one by one, it is real slow.  If i delete the directory as a whole, it is much faster.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Accepted Solution

by:
Crazy_king_in earned 50 total points
ID: 9728530
Try this

Public Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long

RemoveDirectory \\DirName
0
 
LVL 7

Author Comment

by:kmorris1186
ID: 9728643
oh, didnt think it would be that simple :)

i will give it a try! i am still revamping the whole GUI of my program.  Trying to make it more user friendly.  I will get back to in a day or so once i get to the deleting code section.

Thanks! i will try all 3 ways.

Nobody has any ideas about the "Method '~' of object '~' failed" error do ya?
0
 
LVL 2

Assisted Solution

by:cofneverlivetotell
cofneverlivetotell earned 25 total points
ID: 9729424
There is some kind of "purge" alternative to "kill"

look it up in MSDN


Cofneverlivetotell
cofneverlivetotell@hotmail.com
0
 
LVL 7

Author Comment

by:kmorris1186
ID: 9816737
Sorry this is taking em so long.  I havent had much time to finish this project up.

I have added 30 points since i am taking so long.

I havent forgotten. dont worry..
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question (http://www.experts-exchange.com/Q_27402310.html) in the VB classic zone, I wrote some VB code in the (Office) VBA environment, rather than fire up my older PC.  I didn't post completely correct code o…
If you have ever used Microsoft Word then you know that it has a good spell checker and it may have occurred to you that the ability to check spelling might be a nice piece of functionality to add to certain applications of yours. Well the code that…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now