这个 API 用来发送 Shell 的通知消息,比如当一个文件被用户程序删除了,就可以通过它来通知 SHELL 及时更新视图;再比如用户程序修改了注册表某些项,要用这个 API 发送通知,否则无法及时生效。这里要介绍的 SHChangeNotify 就是专门做这些事的!通知可以是有利的,也可以是无赖的,根本没那回事,也可以通知别人,造成欺骗。且看下面这句 C 代码:
SHChangeNotify( SHCNE_DELETE, SHCNF_PATH | SHCNF_FLUSHNOWAIT, TEXT("C:\\WINDOWS"), NULL );
运行这条命令时,请打开 C 盘,并确认 WINDOWS 文件夹存在,运行后,保证目瞪口呆,WINDOWS 文件夹竟然不见了,哈哈,别怕,刷新一下又回来了。这只是欺骗而已。
这个东西有吓人作用,相信我这么一提大家都可以想到要怎么利用了,我就不多嘴了。还想说的是,我曾经看过一个白痴就用了这句为基本原理写了一个删除自身的程序,竟然欺骗了很多高手,还好我没上当,我见过 Gary Nebbett 用汇编写的一段删除自身的代码,不过那个在 Windows 2000 之后的新 WINDOWS 系统都不能用了。当有人告诉我他写了在 XP/2003 下都可以在退出前删除自身的程序时,我无法相信,于是研究了他的程序,发现这家伙很鬼!竟然和我一样发现了这个欺骗 SHELL 的 API。