I’m trying to write some simple code that will return the directory for the recycle bin on a local drive. Seems like it would be simple — should be a thousand answers on Google. Haven’t found one yet 🙁
I HAVE found that FAT and NTFS drives have different base names (RECYCLED and RECYCLER). I’ve found that ‘the’ recycle bin is a virtual folder that combines the recycle bins of all drives on the machine.
What I haven’t found is a way to find C: drive’s recycle bin directory — even on a Vietnamese (or any other non-English) machine. (No posts I can find indicate whether “RECYCLER” gets internationalized or not)
Can anyone point me to a definitive answer?
Thanks
UPDATE: Aware of CSIDL_BITBUCKET and the functions that use it. From everything I’ve read though, it points to a virtual directory which is the union of all deleted files by that user on all drives. Looking for the physical recycle bin directory (on my Vista it appears to be C:\$Recycle.Bin as far as I can tell)
Using Raymond Chen’s advice, and someone else’s technique (can’t remember where I found it) I present a function that will find the Recycle Bin directory on a drive. The function cycles through the directories in the root directory looking at hidden and/or system directories. When it finds one, it checks the child subdirectories looking for one that has CLSID_Recycle Bin.
Note that I’ve included two GetFolderCLSID functions below. Raymond Chen’s is the simpler one, but it doesn’t work on Windows 2000. The other implementation is longer, but appears to work everywhere.
Call like: CString recycleDir = FindRecycleBinOnDrive(L”C:\”);