找回密码
 加入
搜索
查看: 8088|回复: 8

强制删除文件

[复制链接]
发表于 2009-4-22 19:13:31 | 显示全部楼层 |阅读模式
FileDelete  来删除系统垃圾  还有 没办法删除掉的!1  有什么法子强制删除掉?
发表于 2009-4-22 20:11:35 | 显示全部楼层
如果是使用中的文件,应该删不掉,我想如果可以关掉引用该文件的其它所有程序的句柄.应该就可以删除了.
发表于 2009-4-22 20:44:18 | 显示全部楼层
这个,,,你要先搞清楚为何文件无法删除。是文件正在使用?还是文件属性未去除?还是NTFS权限不足?
发表于 2009-4-22 23:52:43 | 显示全部楼层
楼上回复的,让我们都没意思回复了。。唉

提醒个:WINDOWS有个写注册表的办法,可以让系统启动后删除文件,不知道有用没。。
发表于 2009-4-23 00:35:38 | 显示全部楼层
4# llztt


你是说这个东东?这是很暴力的,在Windows启动过程中,仅加载基本驱动(总线,硬盘等),运行过磁盘扫描后就开始删除。这时还删不掉的文件估计只有十几个吧。

;===============================================================================
; 说明:   在系统重启后移动/删除文件
; 语法:   _FileMoveAtReboot($sSFile[, $sTFile = ""])
; 参数:   $sSFile - 源文件
;         $sTFile - [可选] 目标文件。如果不指定,文件将在重启后被删除
; 需要:   无
; 返回:   成功 - 1
;         失败 - 0, 并设置 @error 到
;            1 - 源文件不存在
;            2 - 权限不足。需要管理员组或 LocalSystem 帐户权限
;            3 - API 调用失败
; 备注:   源文件和目标文件必须在同一卷
;===============================================================================
Func _FileMoveAtReboot($sSFile, $sTFile = "")
        Local $sRegTmp, $iDel, $aResult
        $iDel = 0x5   ; MOVEFILE_REPLACE_EXISTING + MOVEFILE_DELAY_UNTIL_REBOOT
        If NOT FileExists($sSFile) Then Return SetError(1, 0, 0)

        $sRegTmp = "PendingFileRenameOperations" & Random(1000, 9999, 1)
        RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", $sRegTmp, "REG_MULTI_SZ", "Test")
        If @error Then Return SetError(2, 0, 0)
        RegDelete("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", $sRegTmp)
        RegWrite("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager", "AllowProtectedRenames", "REG_DWORD", 1)

        If $sTFile = "" Then
                $aResult = DllCall("kernel32.dll", "int", "MoveFileEx", "str", $sSFile, "ptr", "", "dword", $iDel)
        Else
                $aResult = DllCall("kernel32.dll", "int", "MoveFileEx", "str", $sSFile, "str", $sTFile, "dword", $iDel)
        EndIf
        If @error OR $aResult[0] = 0 Then
                Return SetError(3, 0, 0)
        Else
                Return 1
        EndIf
EndFunc   ;==>_FileMoveAtReboot
发表于 2009-4-23 00:43:37 | 显示全部楼层
我只见过,还真没实际应用过,还真不知道这么暴力,学习了,哈哈
发表于 2009-4-23 14:59:38 | 显示全部楼层
太狠点了,这个东东搞出来就基本能回dos了
发表于 2009-4-26 16:43:38 | 显示全部楼层
这个貌似很厉害! 不知道设置权限的文件重启是否能删除?
发表于 2009-4-26 16:51:17 | 显示全部楼层
这个貌似很厉害! 不知道设置权限的文件重启是否能删除?
风雨网络 发表于 2009-4-26 16:43


PendingFileRenameOperations在启动过程中由smss.exe处理,smss.exe登录用户是SYSTEM。所以从理论上来说,如果SYSTEM也没删除那个文件的权限,这是删不掉的。
另外,这还是有局限的,比如,用这个肯定删不掉smss.exe本身及其调用的ntdll.dll文件。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-25 00:45 , Processed in 0.070340 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表