ForceDel - a tool that deletes locked files

Discuss and announce Total Commander plugins, addons and other useful tools here, both their usage and their development.

Moderators: white, Hacker, petermad, Stefan2

Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

Got it now.

When I try previous test to delete, it locks up rather than show the error dialog.

On some other files, it deletes but generates the "0x00000000" error when complete.

Let me know if you need more details.
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

Giovanni wrote:Got it now.

When I try previous test to delete, it locks up rather than show the error dialog.

On some other files, it deletes but generates the "0x00000000" error when complete.

Let me know if you need more details.
I do.
What OS do you use?
Do you have admin or debug user rights?
What was the command line?
Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

What OS do you use?
Do you have admin or debug user rights?
What was the command line?
Windows XP SP2 English 32 bit - fully updated.

Full admin rights - logged in as local administrator.

No parameters used: ForceDel filename.ext

File system is NTFS - full permissions and ownership.

No other software / antivirus running.
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

ForceDel 1.5
[!] Fixed crashes (I hope so..)
[+] Delete file comments (only descript.ions created by TC)
[+] Delete invalid files
[~] Unicode conversion
[-] Relative paths support. Yes, you have to always specify full path.

TODO:
- Delete to recycle bin
- Convert to a windowed app
- Terminate processes keeping the lock
- Print progress
- Unload dlls
- Implement apt like termination methods
- Improve performance
Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

You have been busy! Lots of changes to the code.

It works correctly now, but full paths (including drive letter must always be specified):

Code: Select all

C:\WINDOWS>ForceDel.exe WindowsUpdate.log
GetFileAttributes(WindowsUpdate.log) failed with: 2
GetDeviceFileName() failed.
Trying to delete:
 WindowsUpdate.log...failed: 2

Code: Select all

C:\WINDOWS>ForceDel.exe \WINDOWS\WindowsUpdate.log
GetFileAttributes(\WINDOWS\WindowsUpdate.log) failed with: 3
GetDeviceFileName() failed.
Trying to delete:
 \WINDOWS\WindowsUpdate.log...failed: 3

Code: Select all

C:\WINDOWS>ForceDel.exe c:\WINDOWS\WindowsUpdate.log
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Trying to delete:
 c:\WINDOWS\WindowsUpdate.log...success
I shall test it more thoroughly when I have more time.

What is [+] Delete invalid files ?
Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

Just tried it once more before I go to bed. It hangs indefinitely when I try it again:

Code: Select all

C:\WINDOWS>ForceDel.exe c:\WINDOWS\WindowsUpdate.log
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 2852
Closing handle in process #2852 ... Closing handle in process #2852 ... Ok
No activity in Process Explorer. Unlocker works fine here :-(
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

Giovanni wrote:It works correctly now, but full paths (including drive letter must always be specified)
That's because of deleting invalid files, which works only with full paths. Restoring support for relative paths would require a lot of work and I think it isn't really important - TC can specify full path for you, GUI (which is planned) will also be able to do it.
Giovanni wrote:

Code: Select all

C:\WINDOWS>ForceDel.exe c:\WINDOWS\WindowsUpdate.log
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Found a handle for \Device\HarddiskVolume2\WINDOWS\WindowsUpdate.log in 872
Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Closing handle in process #872 ... Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Ok
Trying to delete:
 c:\WINDOWS\WindowsUpdate.log...success
I shall test it more thoroughly when I have more time.
What's the problem? Was the file deleted? Log says it was...Or maybe you're complaining about the order? Hmm...I can display the results when I know them. TODO.
Giovanni wrote:What is [+] Delete invalid files ?
Invalid files either have invalid characters in name ( meaningless unicode characters ) or too long path (259 characters is max for most uses). Neither TC nor Explorer can delete such files.
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

Done.
[!] Correct logging order
[+] Delete to recycle bin
Click me.
Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

That's because of deleting invalid files, which works only with full paths. Restoring support for relative paths would require a lot of work and I think it isn't really important - TC can specify full path for you, GUI (which is planned) will also be able to do it.
Understood - I just displayed error messages 2 and 3 and correct usage in case anyone else has a query.
What's the problem? Was the file deleted? Log says it was...
Yes, file was deleted on first run when "...success" displayed, but would lock up on subsequent attempts when it stopped at "Closing handle in process #xxxx ... Ok". Version 1.6 does the same with the new message "Closed a handle in process #xxxx".
Or maybe you're complaining about the order? Hmm...I can display the results when I know them. TODO.
No complaints at all - I am sorry if I inadvertently offended you. I am just trying to give feedback to this great utility. It is a welcome addition to TC.
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

Giovanni wrote:
What's the problem? Was the file deleted? Log says it was...
Yes, file was deleted on first run when "...success" displayed, but would lock up on subsequent attempts when it stopped at "Closing handle in process #xxxx ... Ok". Version 1.6 does the same with the new message "Closed a handle in process #xxxx".
That's probably because there's more than one handle for this file in this process. Probably I should display also handle number to prevent confusion.
Giovanni wrote:
Or maybe you're complaining about the order? Hmm...I can display the results when I know them. TODO.
No complaints at all - I am sorry if I inadvertently offended you. I am just trying to give feedback to this great utility. It is a welcome addition to TC.
Maybe "complaining" wasn't a good word, sorry for my english. I always treat constructive criticism as something positive. And thank you for it.
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

GUI is almost done. But it definitely needs an icon. Is anybody willing to help?
Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

Why not just use a red cross which seems to be a standard icon for deletion? Or overlay a cross on a padlock.

Since I cannot add attachments in this forum, nor PM, I encoded and included some icon files:

Code: Select all

MIME-Version: 1.0
Content-Type: application/octet-stream; name="icons.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="icons.7z"

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
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

Yes, red cross was what I was thinking about. I just needed one. :wink: Thanks.
User avatar
m^2
Power Member
Power Member
Posts: 1413
Joined: 2006-07-12, 10:02 UTC
Location: Poland
Contact:

Post by *m^2 »

ForceDel 1.7 beta.
Changes:
[+] GUI
[+] Faster work, especially with deleting to recycle bin
[+] A lot of minor changes
Giovanni
Member
Member
Posts: 154
Joined: 2005-03-23, 18:28 UTC

Post by *Giovanni »

Nice job on the GUI - simple yet comprehensive.

The app works well when I choose a file from the GUI, but always returns error 1026 when a filename is specified in the command-line.

I have just had a very quick look at the source code, and I think that you have forgotten to double-null terminate the filename in SHFileOperation (but my C is rusty so I may be wrong!).

I shall test more tomorrow when I have more time...
Post Reply