最近电脑出现几个病毒,卡巴斯基都删除不掉,我想用vb实现删除文件,vb 里面有kill 函数 和API 函数 Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long 这两个函数肯定不行,请高手,大家帮忙想个啥办法,能彻底的删除文件?大家讨论一下
Private Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long Private Const MOVEFILE_DELAY_UNTIL_REBOOT = &H4 Private Const MOVEFILE_REPLACE_EXISTING = &H1 'api声明 Private Sub Command1_Click() MoveFileEx "c:\nsa\note.ns", vbNullString, MOVEFILE_DELAY_UNTIL_REBOOT '把原来文件kill End Sub
先对文件权限作限制 读取修改创建 只留删除权限(文件右键属性->安全->高级->权限-> 选择administrators->编辑 拒绝那列全部勾上 除了删除)
然后删除注册表相关项 重启电脑 删除病毒文件
http://blog.csdn.net/chenhui530/archive/2007/10/18/1831372.aspx
原理即找到和它相关联的文件,然后把所有关联的文件,结束进程并且删除掉,修改注册表。
这样简单好学一些。
线程插入技术可以帮你.
http://download.csdn.net/source/330476
只要驱动在运行,那么结束进程也没用,
你在发出删除请求的时候就被驱动给拦截了(内核态hook之类的手法)
对于这种,使用VB是没有办法删除的(除非界面用VB写,实现逻辑[驱动]使用C/C++)
Private Const MOVEFILE_DELAY_UNTIL_REBOOT = &H4
Private Const MOVEFILE_REPLACE_EXISTING = &H1
'api声明
Private Sub Command1_Click()
MoveFileEx "c:\nsa\note.ns", vbNullString, MOVEFILE_DELAY_UNTIL_REBOOT '把原来文件kill
End Sub