同样的程序,在XP下好好的,转到2003下就蓝屏了。
一开始怀疑是编译器的问题, 在XP的 上2003----> x86 checked build environment 上编译,结果不行。
又到2003下 x86 checked build environment 上编译,还是不行。
逼得没办法了,只好在03下一句句注释掉试。 终于定位在zwwritefile(),不写文件就没事。
问题就出在Zwritefile()上。 当我在XP上使用这个函数写一个已有文件(或创建)时没有问题,在2003上就蓝屏。
幸好以前在2003上用C#写网页也碰到过类似经历(web.config出错),所以怀疑是被写文件的操作权限问题。 所以给被写文件加上everyone用户,给预读写权限, 重启,OK!
总结:XP的权限管理是无所谓的, 2003对文件的默认权限只有administrator、system和user三个用户有权操作。 所以必须给被修改的文件加everyone用户,并可写,你的程序才能够对这个文件写操作。
PS:zwwritefile不是内核函数吗?为什么还会受用户限制????????