如题,我想强制删除一个正在使用的文件,我应该如何做呢?

解决方案 »

  1.   

    办法是有的,不过太麻烦。需要调用比较底层的api,而且在某些系统上需要权限。简单的办法是移动到临时文件夹并更名,让用户觉得仿佛是删除了。
      

  2.   

    1.查找所有打开目标文件的进程,全部kill掉然后删除。
    -难度很高,可以参考Listing Used Files
    -核心是对Windows API NtQuerySystemInformation 的调用
    -除了调用API权限有一定要求外,要把进程全部杀掉也有一定难度
    2.得到文件在磁盘上的位置,用0覆写
    -Reading and Writing to Raw Disk Sectors
    -似乎也有权限问题,并且定位文件在磁盘上的位置也有难度(磁盘碎片等影响)
      

  3.   

    不是太明白你为什么这样做。
    调用API可以这样做,但是很麻烦,我的想法是:先关闭,在删除,同步进行,相当于文件在使用的过程中删除了。
      

  4.   

    这个连杀软都没办法不知道多少个杀软对进程注入型的玩意没招(尤其是系统关键进程,你把系统关键进程kill的,系统直接就挂了),他们只好弄个启动列表。在下次启动前删除包括很多卸载软件同样如此,他会弹框告诉你,“某些项被占用,暂时无法删除,他将在下次系统启动后自动删除”