Note 1:
以前版本的Windows设计的一些应用程序之所以在Windows Vista上不能正常工作,就是因为在实现这些程序时,没有充分考虑安全性.假定一个应用程序在启动时要从一个注册表子项中读取一些数据.正确的做法是调用RegOpenKeyEx,向其传入KEY_QUERY_VALUE,从而指定查询子项数据的权限.然而许多应用程序对安全性没有任何考虑.有的软件开发人员还是按照老习惯,在调用RegOpenKeyEx函数的时候,传入KEY_ALL_ACCESS作为期望的访问权限.这样做的问题在于,对于一个不是管理员的标准用户,注册表项(比如HKLM)也许是只读的.所以,当这样的应用程序在Windows Vista上面运行时,调用RegOpenKeyEx函数并传递KEY_ALL_ACCESS就会失败.
Note 2:
不同进程中运行的线程需要共享内核对象.下面罗列了一些理由.
利用文件映射对象,可以在同一台机器上运行的两个不同进程之间共享数据块.
借助mailslots和named pipes,在网络中的不同计算机上运行的进程可以相互发送数据块.
mutexes、semaphores和事件允许不同进程中的线程同步执行.例如,一个应用程序可能需要在完成某个任务之后,向另一个应用程序发出通知.
用三种不同的