views:

4030

answers:

5

I want my application to clean all the temp files it used, the problem is that not all the temp files are under my control, so I just want to "brutally" unlock them in order to delete them, something similar to what the unlocker does, but programatically.

+2  A: 

Surely, of your application is wanting to clean up the temp files it owns, then you have full control to unlock these files and delete them!

If you're wanting to delete all TEMP files, whether owned by your application or otherwise, you should be VERY careful. The original application probably applied the lock because it wants to use the file!

If you truly need to, you could always spawn a command-line application rather than trying to replicate the functionality of existing tools which will be difficult in C#.

Ray Hayes
They files are part of my application but they're not part of my module and for political reasons I cannot modify that module (didn't really wanted to get into that details :-) ), anyway I know it is safe to brutally delete those files.
pablito
+1  A: 

Take a look at this article. I think that you'll struggle to do this in C# natively, even using interop, but writing a C++/CLI wrapper assembly may be a good compromise. Note also that the user needs to have the SE_DEBUG privilege for this to work.

Stu Mackellar
+2  A: 

I've struggled with this as well, and ended up just shelling out to Unlocker's command line implementation. In my case it has to run many times daily and ends up unlocking thousands of files per day without any problem.

Travis Laborde
A: 

I don't know about your application and your files that you are using, but if you are using FileStream to manipulate with you files you must close the FileStream and Dispose the FileStream object and then your used file(s) will be unlocked.

milot
A: 

Check out this thread on the MSDN forums. There's enough information to do what you want, but its not recommended.

chilltemp