中国开发网: 论坛: 程序员情感CBD: 贴子 52139
李颖: 关于监视文件共享情况
关于监视文件共享情况


现在有一个系统,包含一个文件服务器,和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

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录