[阅读: 879] 2004-11-24 09:20:07
关于监视文件共享情况
现在有一个系统,包含一个文件服务器,和N个客户端,OS都是WinXP
文件服务器通过共享目录的方式将文件提供给客户端访问
客户端有三种情况使用这些文件
1、从别的模块接收数据之后写入文件
2、管理现有文件,类似Windows Explorer
3、编辑文件内容
现在的问题是,如果某个客户端长时间打开server上的文件,会导致文件锁定
使得别的客户端无法通过文件管理模块移动和复制这个文件
现在希望作一个新的模块来监视server上的文件共享状态
我现在在作调查,看技术上有哪些可行的办法,能够达到什么功能
已知的信息如下:
(1)通过API NetFileEnum可以得到server上所有被打开的共享文件信息
包括ID、文件名、文件打开模式(读/写)、Lock数、客户端windows账号
(2)通过API NetFileClose可以强行关闭被打开的共享文件
(3)通过API NetSessionEnum可以得到连接到server上session信息
包括客户端机器名、客户端windows账号、打开文件数量、session连接时间、最后一次数据访问以来的空闲时间
(4)通过API NetSessionDel可以强行关闭某个session
以上功能加起来,跟Windows自己的系统管理工具能实现的功能基本上一样
现在还希望得到以下信息
(1)某个共享文件被打开的时间
(2)某个共享文件最后一个被访问时间
如果是读操作,通过Windows Explorer看到的"Access Time"似乎没有被更新
不知道是不是Windows读了cache导致的
(3)某个共享文件被打开的具体的应用程序名
在本地打开一个Office文档,然后通过Windows Explorer删除它,则出错信息中会提示打开文件的应用程序名
但是如果在本地打开一个Office文档,然后通过别的机器的Windows Explorer来删除它,则出错信息中不会提示应用程序名
我不知道查找应用程序名是怎么实现的,也不知道在网络上能不能实现
请问有什么好的方法吗?或者还有什么别的建议?
谢谢
DISSENT IS THE HIGHEST FORM OF PATRIOTISM !
--Thomas Jefferson