比如 D 盘有个 test.exe ,我想通过 C# 程序来运行以便进行实时监测,最终目的是监测并复制备份该程序在硬盘中创建然后马上删掉的所有文件。
我试过 FileSystemWatcher,毫无反应,并不能检测到文件的创建,可能是因为 test.exe这个程序并没有“真正”创建文件也就是没有写入磁盘文件表中,而只是类似解包把文件从 加密过的压缩包中释放出来后读进内存马上删掉。
至于我为什么知道test.exe确实进行过硬盘读写记录呢?因为我之前使用一个监控硬盘读写记录的软件(名字忘了),通过硬盘读写记录专门一个个创建了所有涉及到的目录,然后试图通过修改硬盘权限禁止删除文件,但是一无所获。
为了不偏离标题,声明一下我的意图:我想知道怎样通过 C# 来运行一个程序以此监测并复制备份该程序在硬盘中创建然后马上删掉的所有文件。
求个思路。
------解决思路----------------------
应该用wmi来获取性能计数器
------解决思路----------------------
FileSystemWatcher?
------解决思路----------------------
至于我为什么知道test.exe确实进行过硬盘读写记录呢?因为我之前使用一个监控硬盘读写记录的软件(名字忘了),通过硬盘读写记录专门一个个创建了所有涉及到的目录,然后试图通过修改硬盘权限禁止删除文件,但是一无所获。
啥思路?啥思维模式?
一无所获就能说明确实删掉了???这应该恰恰说明没有删掉啊.
所谓读到内存,再删掉,根本就是毫无道理的
既然仅仅是读进内存,就不存在"删掉"一说,只不过是将内存对象释放了而已
------解决思路----------------------
虽然楼主要使用 C#,但这种底层的监控还得利用系统本身的API,需要对系统内部很了解。
据我了解这大概要使用API拦截技术吧,把文件操作相关的API全部栏截进行分析,不容易。
------解决思路----------------------
用 FileSystemWatcher 应该就可以
只不过要找对监视的位置
比如程序在 D盘,但解压产生的临时文件就可能会在C盘的temp文件夹中
你没有去监视,当然也就不知道了
------解决思路----------------------
filemonitor先看看有没有释放文件,以及释放到哪里了