易语言实现暴力删除浏览器缓存文件的方法

需积分: 14 3 下载量 4 浏览量 更新于2024-10-30 收藏 126KB ZIP 举报
资源摘要信息:"易语言实现文件删除操作时遇到文件被占用的情况,该资源提供了处理此类问题的方法和思路。具体描述了在开发中遇到的一个实际问题,即需要删除网页缓存文件,但由于浏览器进程未关闭导致文件无法删除。为解决这一问题,作者采取了结束浏览器进程后再尝试删除文件的方法。此外,资源中还提到了实现文件强制删除的方案,并采用了调用第三方工具的简便方法。最后,作者表达了希望能收集到更多高效且实用的文件删除技术或工具的愿望,并鼓励大家分享更优的解决方案。" 知识点: 1. 文件删除问题:在操作系统中,如果文件正在被某个进程使用,则该文件将无法被删除,这是因为大多数操作系统都有一套文件锁定机制来防止数据损坏或不一致性。 2. 浏览器缓存文件:网页缓存是浏览器存储的一些网站数据,用于加速网页的加载速度。当浏览器运行时,它可能会占用这些缓存文件,使得这些文件暂时无法被删除。 3. 结束进程:为了解决文件删除问题,一种简单的方法是找到并结束占用该文件的进程。在本例中,需要结束浏览器进程。 4. 强制删除:强制删除是指绕过操作系统的文件锁定机制直接删除文件。这通常涉及到使用系统级别的API或者第三方工具来实现。 5. 第三方工具:由于直接实现强制删除较为复杂,作者选择了调用第三方工具的方法来实现。这表明在开发中,合理利用现有工具可以简化开发流程。 6. 易语言:易语言是一种简单易学的编程语言,主要面向中文用户,它提供了一套易于操作的API,可以方便地实现文件操作和系统进程管理等功能。 7. 资源分享:作者在此分享了自己的经验,并且鼓励社区成员分享更佳的解决方案,这体现了开源社区的知识共享精神。 8. 2018开源大赛:这是资源附带的标签信息,表明这个资源是在某次开源大赛中产生的。这可能是作者参与活动的一部分,或者是为了参与活动而整理的技术文档。 9. 文件解锁:在尝试删除文件前,必须解锁文件占用。资源中虽然没有详细说明如何实现解锁,但这是解决文件删除问题的关键步骤。 10. 调用API:在编程中,调用API(应用程序编程接口)是一种常见的方法来实现特定的功能,例如在易语言中,可以通过调用特定的API来结束进程或删除文件。 11. 程序设计:编写程序时,需要考虑到文件操作的各种异常情况,如文件锁定、权限不足等,合理设计程序逻辑来处理这些情况是保证程序稳定运行的关键。 通过以上知识点的阐述,我们可以了解到,在进行程序设计和开发过程中,处理文件删除操作时可能会遇到的挑战,以及如何利用编程语言特性和第三方工具来克服这些挑战。同时,这也反映了开源社区的开放性,鼓励开发者们相互交流、学习和分享最佳实践。
2021-06-12 上传
前言 上一次发布过的程序:【首发】检测文件的占用,具有学习和商业价值(By超级用户),可以使用,仿电脑管家 正文 对于怎么枚举文件句柄 ,上一帖子对此有介绍,核心代码大概如下:如果 (ZwQueryObject (handle, #ObjectTypeInformation, unicode, 0, size) ≠ #STATUS_INVALID_HANDLE )' 只要不是无效的,为什么,详细看下面的注释 ' 参数 ' Handle ' 对象的一个句柄来获取信息。 ' ObjectInformationClass ' 指定一个OBJECT_INFORMATION_CLASS返回值的类型决定了信息在ObjectInformation缓冲区。 ' ObjectInformation ' 一个指向caller-allocated缓冲接收请求的信息。 ' ObjectInformationLength ' 指定的大小,以字节为单位,ObjectInformation缓冲区。 ' ReturnLength ' 一个指向变量的指针,接收的大小,以字节为单位,请求的关键信息。如果NtQueryObject STATUS_SUCCESS返回,返回的变量包含的数据量。如果NtQueryObject返回STATUS_BUFFER_OVERFLOW或STATUS_BUFFER_TOO_SMALL,您可以使用变量的值来确定所需的缓冲区大小。 ' 返回值 ' NtQueryObject返回STATUS_SUCCESS或适当的错误状态。可能的错误状态码包括以下: ' 返回代码 描述 ' STATUS_ACCESS_DENIED ' 有足够的权限来执行该cha询。 ' STATUS_INVALID_HANDLE ' 提供对象句柄无效。 ' STATUS_INFO_LENGTH_MISMATCH ' 信息长度不足以容纳数据。 unicode = 取空白字节集 (size) ZwQueryObject (handle, #ObjectTypeInformation, unicode, size, 0)' 读取信息的unicode文本 RtlUnicodeStringToAnsiString (ansi, unicode, 真)' 编码转换 ' RtlUnicodeStringToAnsiString例程将给定Unicode字符串转换成一个ANSI字符串。 str = 指针到文本 (ansi.Buffer) ' RtlFreeAnsiString常规版本存储由RtlUnicodeStringToAnsiString分配。 ' 参数 ' AnsiString ' 指针ANSI字符串缓冲区由RtlUnicodeStringToAnsiString以前分配的。 RtlFreeAnsiString (ansi) str = “无法获取”' 无效的怎么获取…… 返回 (str) 这一次呢更新了一个RemoteCloseHandle ,大概的原理是什么呢? 同时也采用了一些比较骚的方法,这种方法的限制较多,但是对于32位进程就很有效果。 NtClose在MSDN的大概介绍 1. NtClose is a generic routine that operates on any type of object. 2. Closing an open object handle causes that handle to become invalid. The system also decrements the handle count for the object and checks whether the object can be deleted. The system does not actually delete the object until all of the object's handles are closed and no referenced pointers remain. 3. A driver must close every handle that it opens as soon as the handle is no longer required. Kernel handles, which are those that are opened by a system thread or by specifying the OBJ_KERNEL_HANDLE flag, can be closed only when the previous processor mo