注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

VB实现文件安全删除  

2014-11-10 22:31:08|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

VB实现文件安全删除

作者: 张家珩2006-01-17 20:20分类:默认分类标签:

在一些系统优化软件中,会有一个"文件安全删除"(有的也叫做"文件粉碎"),这个功能可以让删除的文件无法被数据恢复软件找回,因此叫做"安全删除".其实"安全删除"的原理非常简单,用VB就可以编写出来,而且核心代码只有3行.

以前在《安全删除,需要第三方软件吗?》中我详细的说了怎样手动安全删除文件,就是把要删除的文件(原文件)用一个空文件覆盖,然后再删除空文件就可以了.

根据Windows文件系统的储存原理,删除的文件并不是在磁盘中涂写成空白的,只是在文件上做了一个"标记",除非以后有文件给覆盖掉,不然这个文件的数据是一直都留在磁盘中的,而不是没有,虽然是看不见的.

因此现在只要把原文件用空文件覆盖,磁盘中这个文件的数据储存的区域就只是空白,所以覆盖的空文件删除后,是恢复不了的.即使被数据恢复软件找到,也是个0字节的文件,没有任何意义.

知道原理以后,在VB中写代码就容易多了.假设删除文件的命令按钮为cmdDeleteFile,程序代码为:

Private Sub cmdDeleteFile_Click()
On Error GoTo Err
Dim sFileName As String 'sFileName变量表示要删除的原文件
sFileName = InputBox$("请输入文件名:") '获取文件名
If sFileName = "" Then Exit Sub '如果没有输入则退出
Open "C:\del.tmp" For Output As #1 '创建一个空文件,以覆盖原文件
Close #1
Kill sFileName '删除原文件
FileCopy "C:\del.tmp", sFileName '覆盖原文件
Kill sFileName '删除覆盖的文件
MsgBox "文件 " & sFileName & " 删除成功!", 64, "安全删除"
Exit Sub
Err:
MsgBox "文件删除失败!" & vbCrLf & Err.Description, 16, "错误"
End Sub

因为VB中的FileCopy语句不支持覆盖文件,所以先用Kill语句删除,在复制过去,结果是一样的.

此程序在数据恢复软件Recover4all,Windows XP SP2,VB6的环境下测试通过.

  评论这张
 
阅读(131)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017