如何在Windows下实时监视系统共享文件夹的变化 收藏
最近在做一个模块时,被要求要实现实时监视本机共享文件夹变化的功能。
刚开始还真一下子想不出什么好的办法,心想,实在不行就不停调用NetShareEnum,把枚举的结果和之前的比对,如果不同就代表发生了变化。不过,这个方法过于SB,完全不符合偶的风格嘛。
泡上一杯咖啡,放进Karajan的CD,放松心情,故作沉思状...... ^ ^
突然脑子一开窍,对了,Windows应该会把共享文件夹的变化实时记录下来,放在某个地方的吧。呵呵,这个地方不用说也知道一定是注册表了。在注册表中一顿狂搜,还真被我找到了。
HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares
接下来就easy了,先创建一个事件,然后调用RegNotifyChangeKeyValue来监视上面那个子键的变化,最后调用WaitForSingleObject来等待我们创建的事件对象。当系统中有共享文件夹信息发生变化时,系统就会重新设置子键下的值,而我们的WaitForSingleObject自然也会接收到事件,坐享其成,呵呵。
顺便提一下,Shares下的Security子键保存的是共享文件夹的访问权限的值,这里如果想一并监视的话,就把RegNotifyChangeKeyValue的bWatchSubtree参数设成TRUE。
阅读(1914) | 评论(0) | 转发(0) |