深入探究Windows系统中的Shell交互与入侵技术
1. 文件系统监控与通知机制
在Windows系统中,资源管理器(Explorer)并非专门的文件系统监控工具,它仅需知晓当前查看文件夹内是否有变化,以防这些变化影响显示数据,如文件和子文件夹的名称、属性、大小、日期及安全设置等。无论具体操作如何,关键在于有事件发生,这似乎是资源管理器性能考量与系统整体性能之间的一种良好折衷。
然而,通知对象存在一个显著缺点,即它们提供的关于实际发生事件的信息十分有限。通知对象就像一个连接了防盗警报和火警警报的铃铛,当它响起时,你无法确定是房子被盗、被烧毁,还是两者皆有。这种限制使得利用该功能创建一个能告知系统中哪些文件正被程序操作的文件系统监控工具变得困难。
不过,在Windows NT 4.0及更高版本中,情况有所不同。Windows NT的Win32 SDK导出并记录了一个名为 ReadDirectoryChangesW() 的函数,其原型与 FindFirstChangeNotification() 类似,但有一个重要区别:它会用关于所发生操作以及涉及的参与者的具体信息填充缓冲区。
2. SHChangeNotify()函数详解
当系统发生变化时,资源管理器能自行检测到一些变化(特别是文件的变化),但对于程序执行的变化,它必须被明确告知。为了简化这一过程,Shell API定义了 SHChangeNotify() 函数,其唯一目的是通知资源管理器某些系统设置已被修改。从概念上讲, SHChangeNotify() 产生的效
超级会员免费看
订阅专栏 解锁全文
2411

被折叠的 条评论
为什么被折叠?



