当前位置:编程学习 > VB >>

VB 监测某个文件被哪个进程打开

小弟想实现这样一个功能,例如说我现在有个文件A 此时文件B 打开或者读写了文件A我想通过我的程序来知道是谁打开了文件A,或者说监测所有进程看看是否有打开文件A,希望各位大侠赐教

简单点就是想知道某个进程打开的所有文件或者说某个文件被哪些进程打开了 VB获取进程打开的文件 --------------------编程问答-------------------- 帮帮忙呀 怎么没有回答我 好桑心啊 --------------------编程问答-------------------- 这个有难度。

帮顶一下……
--------------------编程问答-------------------- 看到他们用 SHChangeNotifyRegister() 等API做“监视”的,都没文件打开、读写之类的动作。
--------------------编程问答--------------------
引用 3 楼 Chen8013 的回复:
看到他们用 SHChangeNotifyRegister() 等API做“监视”的,都没文件打开、读写之类的动作。


我看到有人用下列方式 但是我不会 求教下

你需要使用ZwQuerySystemInformation和ZwQueryInformationFile这两个未公开的API

先使用ZwQuerySystemInformation函数枚举系统中打开的所有文件的句柄,再使用ZwQueryInformationFile,然后根据参数FileInformationClass的不同值来返回不同的类型,使用FileInformationClass=FileInformationClass来得到FILE_NAME_INFORMATION,从而得到是哪个进程打开了这个文件

LS讲的方法没错,我小小地补充一下。

ZwQueryInformationFile对应的hFile必须是本进程内的句柄(句柄是进程相关的,不能跨进程使用同一句柄),所以不可以对ZwQuerySystemInformation返回的句柄表里查到的句柄直接ZwQueryInformationFile,应该先ZwDuplicateObject到本进程内之后再ZwQueryInformationFile。

另外,如果想关闭句柄,可以创建远程线程执行CloseHandle(ZwClose),或者用ZwDuplicateObject,最后一个参数传DUPLICATE_CLOSE_SOURCE可以关闭原句柄。

不知道哪位兄弟能帮忙整理一下 --------------------编程问答-------------------- http://www.nirsoft.net/utils/opened_files_view.html
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,