查询并删除回收站内容

本文提供了一段用于查询和清空Windows回收站的C/C++代码示例。通过使用SHQUERYRBINFO结构和SHQueryRecycleBin及SHEmptyRecycleBin函数,可以实现获取指定回收站的内容大小和项目数量,并清空回收站。
Codes
//////////////////////////////////////////////////////////////////////////
//原文:http://hi.baidu.com/hypkb/blog/item/a35950238b2242a34623e8a5.html
//查询并删除回收站内容
//初始化SHQUERYRBINFO结构
SHQUERYRBINFO RecycleBinInformation;
ZeroMemory(&RecycleBinInformation,sizeof(RecycleBinInformation)); //must
RecycleBinInformation.cbSize=sizeof(RecycleBinInformation);
TRACE("///////////////////////////////////////////////////n");
//查询回收站信息
if (SHQueryRecycleBin("F://",&RecycleBinInformation)==S_OK)
               //SHQueryRecycleBin第一参数为要查询回收站的盘符或者文件夹,子文件夹
               //一般其根目录相同指向的回收站也是一样的
               //NULL则指代所有回收站,和下面的SHEmptyRecycleBin第二参数相同
{
               TRACE("The total size of all the objects in the specified Recycle Bin %ld/n",RecycleBinInformation.i64Size);
               TRACE("The total number of items in the specified Recycle Bin %ld/n",RecycleBinInformation.i64NumItems);
}
else
{
	TRACE("SHQueryrecycleBin Fail/n");
}
 
//清空回收站
if (SHEmptyRecycleBin(NULL, "F://", NULL/*SHERB_NOCONFIRMATION|SHERB_NOPROGRESSUI|SHERB_NOSOUND*/) == S_OK)
               //SHEmptyRecycleBin第三参数如果要显示确认删除对话框和声音之类的东西置空既可
{
               TRACE("SHEmptyRecycleBin Success/n");
} 
else
{
               TRACE("SHEmptyRecycleBin Fail/n");
}
 //////////////////
//运行程序时会额外弹出如下对话框,我搜索也没搜到合适的desktop文件,不过我在E:/Recycle下试着删掉
该盘下的回收站时看到过一次desktop文件,以后试了几次也没在看到过,不知为么,可能与系统时有关...
 
/////////////////////////////////
其他:
1:桌面已经有一个回收站了,可是为什么每个磁盘里又再有一个回收站,这些回收站是用来做什么用的?
桌面上的是快捷方式,但是比较特殊,是无法删除的。分区里的回收站才是真正的文件夹,也是无法删除的。当磁盘内有文件要删除时,会自动剪切到那个分区的回收站,并且被压缩(不是rarzip之类的压缩,而是系统自带的特殊方法)。每个磁盘都划分出一定的空间(一般是10%)来作为回收站,当删除文件的时候,它并没有真正删除,而是转移到了原文件所在盘划分出的这个回收站里了,这样如果恢复的话也快的多。桌面上的回收站相当于是所有磁盘里的回收站的快捷方式,所有回收站里的东西都可以在桌面上的这个回收站里看到。

2:为什么一个磁盘下有多个回收站?如何才可以去除一些,或者让他保持一个?

你每个都删删看,要是不是本系统建的就能删掉,有可能是你装过好几个系统,或是你的机器上装了双系统!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值